zoukankan      html  css  js  c++  java
  • 异常

    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日志:记录系统执行的异常事件

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

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

  • 相关阅读:
    问题排查
    代码
    前端
    即时通信系统 偶尔看到 就想学着做一下
    Oracle 笔记
    javaweb dev 入
    mysql安装
    windows下安装nginx
    spring MVC上传附件
    mysql+mybatis递归调用
  • 原文地址:https://www.cnblogs.com/864466244qq/p/8516956.html
Copyright © 2011-2022 走看看