Java的基本语法4
Java学习之Java异常

1.Throws关键字&异常类型
throws关键字是在方法上声明一个异常,表示这个方法可能会引发异常
throws关键字的作用大多是为了给后来者开发者提供便利。
当一个方法在写代码(编译时),以及程序在运行时(运行时),有可能会发生错误或者异常,为了防止内存泄漏,以及数据错乱,可以在方法或者类前面加一个throw + 异常类型,当出现错误,或者编写出错误的代码时来提示程序员出现错误的类型,以及原因,便于编辑器指出。
异常类型分为:
1.检查异常(继承Exception):编译未通过遇到的异常,错误等。
例如:
SQLException、IOException、ClassNotFoundException、
FileNotFoundException、 SocketException
2.非检查异常(继承RuntimeException):运行过程遇到的异常。
如:
NumberFormatException,ClassCastException,NullPointerException,ArithmeticException、IndexOutOfBoundsException
ps:
内存泄漏:当一个程序内变量使用的资源过多(如对象,地址的存储,数据库请求操作),会导致JVM(Java虚拟机:Java Virtue Machine)的内存过高,导致程序崩溃。
这种情况下,程序员只能重启程序,导致程序未能完成的操作永远不会被操作,导致数据丢失。涉及金钱交易的系统若出现内存泄漏问题,则会对用户,公司造成不可承担的后果。
package com.lx.demo13;
import java.io.IOError;
import java.io.IOException;
import java.sql.SQLException;
public class Base {
public Base() throws ClassNotFoundException
{
}
}
如果父类的构造函数声明了检查异常,子类的构造函数
一定要声明大于或等于父类的检查异常,否则编译报错
package com.lx.demo13;
public class Son extends Base{
//throws是在一个方法上声明异常
//throws声明异常
Son() throws Exception
{
}
}
这个案例中Exception的范围就大于ClassNotFoundException(没有找到特定类异常)
因为ClassNotFoundException继承于Exception,ClassNotFoundException是Exception的子类,说明检查的范围Exception比ClassNotFoundException大(ClassNotFoundException只有特定错误出现才会被检查到,Exception只要不符合语法就会报错)
如果异常声明的检查范围子类大于父类,那么就会在一行产生两个相同的错误。这是不被允许的
在子类父类的方法继承中声明throws时,也遵循上述规则
package com.lx.demo14;
import java.sql.SQLException;
public class Son extends Base{
/**
* 在继承关系中
* 如果子类重写了父类的方法,子类重写的方法声明了检查异常
* ,父类的方法必须声明大于或等于子类声明的检查异常
*/
public void run() throws SQLException
{
}
}
package com.lx.demo14;
import java.sql.SQLException;
public class Base {
public void run() throws Exception
{
}
}
2.Final关键字
被final关键字修饰的类,方法,变量只能被赋值一次
package com.lixin.demo1;
public final class Animal {
//final类中的变量是变量还是常量?
//final类中的变量是变量
int a = 10;
//final类中的方法是final方法
public void run()
{
}
}
package com.lixin.demo1;
public class Test {
public static void main(String[] args) {
Animal an = new Animal();
an.a++;
System.out.println(an.a);
}
}