1,什么是异常呢?
在程序中,错误可能产生于我们没有预料到的各种情况,或者超出我们的可控范围的环境。比如需要用户输入年龄,用户输入了一个字母,这就是一种异常。
2.异常的作用
能够及时有效地处理程序中的运行错误。
3.异常的分类
异常分为编译时异常和运行时异常
----运行时异常:是运行的时候才会出现的一种异常,编码过程中可以先不解决
----编译时异常:是在编译的时候就出现的异常,需要先解决
4.常见的异常
ClassCastException 强制类型转换异常
ArryaylndexOutOfBoundsException 数组越界异常
ArithmeticException 数学运算符异常
InputMismatchException 输入类型不匹配异常
如果系统要求用户输入一个整数,但是用户输入了一个字母,这时候运行程序就会发生InputMismatchException输入类型不匹配异常
Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Unknown Source) at java.util.Scanner.next(Unknown Source) at java.util.Scanner.nextInt(Unknown Source) at java.util.Scanner.nextInt(Unknown Source) at text.text.main(text.java:11)
5.关键字 try catch finally throw throws
try catch
try{
//把可能出现异常的代码放这里
}catch(Excepion e ) {
// 捕获异常
}catch( ){
//程序运行过程中,如果出现异常则会被对应的catch【可以有多个】捕获到,其他的不会被执行
}
try{}
catch (ArithmeticException a){ // 捕获异常
//以字符串的形式打印异常信息
System.out.println("数学异常.....");
String message = a.getMessage();
System.out.println(message);
}
捕获异常的时候,如果出现子父类异常的情况,将范围小的写在上面,范围大的写在下面,也可以只写一个大的。
如果程序没有异常的话,会正常的自上而下执行,如果程序有异常的话,会在异常的地方中断程序的执行,然后回跳到对应的catch中执行捕获的异常信息。
finally
如果是希望一定会被执行的内容,则放到finally中,除非遇到 exit( )方法------>强制退出,当程序中既有return 又有 finally 的时候,会优先执行finally 再执行 return。
try{
.....
}catch(){
......
}finally {....}
throws
上抛异常 ,在方法声明位置上使用,表示上报异常信息给调用者。
public int chu (int a,int b) throws Exception{
int num=a/b;
returen ;
}
如果方法A中有异常没有处理,做了上抛,则调用A的方法B需要try处理,如果依然没有处理,运行的时候异常会报错。
throw
throw :异常的抓取 throw new 异常类型;
如果Object类给我们提供的异常提示信息不满足我i门的需要,可以自定义异常,来定制化异常提示
public void pop() throws StackOperationException {
if(index < 0){
throw new MyStackOperationException("可以自定义输出异常信息!");//手动抛出异常
}
}