异常

1,什么是异常

生活中上班中发生撞车。

异常就是在程序中运行的过程中,所发生的不正当的事,如文件找不到,网络连接不通,或者中断,数组下标越界等,不正常的事。

1.1  什么是异常的处理?

异常处理机制就是在平时可能遇到的意外情况,预先想好了,一些处理的方法。

      Java中的异常处理机制,是通过五个关键字来实现的:try,catch,finally,throw,和throws。

1.2  try - catch 块

示例:

public  class  Test{
  public static void main(String [] args){
       Scanner  in=new Scanner(System.in);
       System.out.print("请输入被除数");
       int num1 =in.nextInt();
       System.out.print("请输入除数");
       int   num2=in.nextInt(); 
       System.out.println(String.Format("%d/%d=%d",+"除数不能为0"));
      e.printStackTrace(); 

}
}

try - catch 程序块的执行流程比较简单,首先执行的是 try 块中的语句,这时可能会有以下三种情况:

1.如果try - catch块中的语句正常执行完毕,不会发生异常,那么catch 块中的所有语句都会被忽略。

当我们在控制台输入两个整数时,示例中的try 与语句中代码将会正常执行,不会执行catch语句中的代码,运行结果如图所示:

如果try - catch 块在执行的过程中出现了异常,并且与catch 块中声明的异常类型相匹配,那么在try 块中其余剩下的代码就会被忽略。

而相应的代码块会被执行,匹配是指catch处理的异常类型所生成的异常类型完全一致的或者是他的父类。

当在控制台提示输入除数时输入了 “B” ,示例中try - catch 块中的代码,int num1=in.nextInt(); 将抛出的InputMismatchExcepetion异常。

由于InputMismatchExpetion是Excepetion的子类,程序将忽略其余剩下的代码去执行catch语句块。运行结果如下:

常见的异常类型如下表:

异常                                                                     说明

Exception                                                             异常层次结构的根类

ArithmeticException                                               算数错误情形,如以0作为除数

ArrayIndexOutOfBoundsException                        数组下标越界

NullPointerException                                            尝试访问Null对象成员

ClassNotFoundException                                     不能加载所需的类

InputMismatchException                                       欲得到的数据类型与实际输入的类型不匹配

illeglArgumentException                                         方法接收到非法参数

ClassCastException                                              对象强制类型转换出错

NumberFormatException                                       数字格式转换异常,如把 "abc" 转换为数字

3. try-catch-finally 块

在try-catch后面添加了finally块把该语句放入finally块。无论是否发生异常,finally块中的代码总会执行

4.多重catch块 

在按照上面的计算并输出商的示例中,其实至少存在两种异常情况,输入整数的内容和除数为0,在示例中可以统一按照Exception

类型捕获其实完全捕获可以用多重catch块

    一段代码可能会引发多种类型的异常,这时,可以在try语句后面跟很多catch语句,异常的子类都在继承与Exception,所以如果把父类放在前面

异常都将被捕获,后面的catch块都将没有执行的机会。

5.声明异常throw

如果在一个方法中抛出了异常,我们就希望调用者能够及时的捕获异常,那么如何通知调用者?

Java语言中通过关键字throws声明某个方法可能抛出异常。throws可以声明多个异常,之间用逗号隔开。

6.日志及分类

日志分类大约有三种

SQL日志:记录系统执行的异常事件

异常日志:记录系统运行中发生的异常事件

业务日志:记录系统运行过程,如用户登录,操作记录。

原文地址:https://www.cnblogs.com/864466244qq/p/8516956.html