GUI添加组件的步骤:
1,设置布局管理器
2,产生组件对象
3,将组件加入容器
在GUI中采用的是先进先出,后进后出的原则。
异常:异常是描述出错信息的对象。
异常的API结构:Throwable是父类,有两个子类Error和Exception。其中Error是错误,是崩溃级别的错误,
可以捕获,但无法处理。Exception是普通错误,可以捕获,可以处理
错误和异常的特点:
错误是可以捕获,但无法处理
异常是可以捕获,也可以处理。
Error是所有错误 类的父类
Exeption是所有异常类的父类
try{
被保护的代码
}catch(NumberFormatException e){//创建异常变量e,接收try块抛出的异常对象
捕获块
e.printStacktrace();//创建异常变量
}
public static void main(String[] args) {
try {
String m= JOptionPane.showInputDialog(null,"请输入一个数");
int n=Integer.parseInt(m);
JOptionPane.showMessageDialog(null, n*n);
}catch(RuntimeException e) {//创建异常变量e,接收try块抛出的异常对象
e.printStackTrace();//创建异常变量
}
System.out.println("=================");
}
如果一个try块有多个catchkuai联用,只会执行第一个和异常匹配的catch块,其余的catch块全部忽略。
异常执行的顺序:
先执行try块的内容,顺序执行,如果在try块中有异常发生,转到catch块执行,同时中止try块中的其他代码。
当try…catch语句结束后,继续执行后面的代码。
finally语块,无论是否有异常发生,都会执行。一般用于流的关闭,数据库关闭等资源清理的操作。
finally语句块必须和try联用。如果在try块或catch块中有return语句,那么跳出方法之前,会执行finally语句。
finally在虚拟机关闭时(System.exit(0))不会执行
异常分为两种类型:如何区分:
编译期异常(检查异常)是开发者必须处理,否则无法通过编译
运行期异常(非检查异常)是开发者可以处理,也可以不处理,即使不处理也可以通过编译
所有的运行异常都是RuntimeException的子类
ArithmeticException 算术异常,在执行了非法的算法运算时抛出,比如,除零操作
ArraayIndexOutOfBoundsException 数组下标越界异常,在访问数组元素时,使用非法下标进行访问时抛出。
(下标为负数,或下标大于等于数组的长度)
Class ClassCastException 类型转换异常,将一个类型化为另一个类型时,新的类型不匹配,指定对象时抛出
NullpointerException 空指针异常,当对null值进行属性或者方法调用时抛出,
NumberFormatException 数字格式化异常,将字符串转化数字类型时,该字符串不是合法的数字格式时抛出
java.lang.NoSuchFieldException: Id 找不到属性异常。当访问指定类的属性时,该属性不存在时抛出
CloneNotSupportedException 当进行对象克隆时,该对象没有实现Cloneable接口时抛出
异常的执行顺序是:先从try块开始执行,顺序执行,如果没有异常,顺序执行,如果有异常,转去catch块块中执行,
同时中止try中其他代码。
throw与throws的区别
throw是语句,表示显示抛出异常对象。throw new Exception();
throws是方法修饰符,表示该方法可能会抛出某种异常。那么,在调用该方法时,需要处理该方法抛出的异常。
重写的限制:子类方法的访问修饰符,要大于或等于父类方法。
子类方法抛出的异常,要小于或等于父类方法。