总之就是一个找错误的过程~
毕竟在java中知道编译器反馈哪里错了,也是一个初学者很纠结的问题。
源码:
1 public class b { 2 3 public static void main(String[] args){ 4 5 /** 6 * 异常捕获 7 * try块存放可能发生的异常java语句 8 * catch块在try语句之后,然后用来激发被捕获的异常 9 * finally语句块最后执行,在try以任一种方式退出,都将执行 10 */ 11 try{ 12 String str = "lili"; 13 System.out.println(str+"年龄是:"); 14 int age = Integer.parseInt("20L");//数据类型转换 15 System.out.println(age); 16 }catch(Exception e){ //catch语句获取异常性质 17 e.printStackTrace(); 18 } 19 System.out.println("program over"); //输出信息 20 21 } 22 }
一般来说,java语句产生异常后,如果不做任何处理,程序将会终止。
由上可知:采用try-catch语句后,若try代码块发生异常,将执行catch代码块后的其他语句。
注:
Exception:catch代码块的变量类型,e是变量
getMessage(): 输出错误性质
toString():给出异常的类型与性质
printStackTrace():指出异常的类型、性质、栈层及出现在程序中的位置
finally语句块
无论程序中有无异常发生,并且之间的try-catch是否顺利完成,都将执行fially语句。
Java常见异常
|
异常类 |
说明 |
|
ClassCastException |
类型转换异常 |
|
ClassNotFoundException |
未找到相应类异常 |
|
ArithmeticException |
算术异常 |
|
ArrayIndexOutOfBoundsException |
数组下标越界异常 |
|
ArrayStoreException |
数组中包含不兼容的值抛出异常 |
|
SQLEXception |
操作数据库异常类 |
|
NullpointerException |
空指针异常 |
|
NoSuchFileException |
字段未找到异常 |
|
NoSuchMethodException |
方法未找到抛出异常 |
|
NumberFormatException |
字符串转换为数字抛出异常 |
|
NegativeArraySizeException |
数组元素个数为负数抛出的异常 |
|
StringIndexOutOfBoundsException |
字符串索引超出范围抛出的异常 |
|
IOException |
输入输出异常 |
|
IllegalAccessException |
不允许访问某类异常 |
|
InstantiationException |
当应用程序池试图访问使用Class类中的newInstrance()方法创建一个类的实例,而指定的类对象无法被实例化时,抛出该异常 |
|
EOFException |
文件结束异常 |
|
FileNotFoundException |
文件未找到异常 |
自定义异常:
第一步:创建一个异常类继承至Exception
1 //class.MyException 2 public class MyException extends Exception{ 3 4 /** 5 * 自定义异常类 6 */ 7 String message; 8 public MyException (String ErrorMessage){ 9 message = ErrorMessage; 10 } 11 public String getMessage(){ 12 return message; 13 } 14 }
第二步,采用throw关键字抛出异常
1 //class.Captor 2 public class Captor { 3 //判断方法是否满足指定条件 4 static int quotient(int x,int y)throws MyException{ 5 if(y<0){ 6 throw new MyException("除数不能是负数"); 7 } 8 return x/y; 9 } 10 //主方法 11 public static void main(String args[]){ 12 try{ 13 int result = quotient(3,-1); 14 }catch(MyException e){ 15 System.out.println(e.getMessage()); 16 }catch(ArithmeticException e){ 17 System.out.println("除数不能为0"); 18 }catch (Exception e){ 19 System.out.println("程序发生了其它异常"); 20 } 21 } 22 }
浙公网安备 33010602011771号