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

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

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

  • 相关阅读:
    November 07th, 2017 Week 45th Tuesday
    November 06th, 2017 Week 45th Monday
    November 05th, 2017 Week 45th Sunday
    November 04th, 2017 Week 44th Saturday
    November 03rd, 2017 Week 44th Friday
    Asp.net core 学习笔记 ( Area and Feature folder structure 文件结构 )
    图片方向 image orientation Exif
    Asp.net core 学习笔记 ( Router 路由 )
    Asp.net core 学习笔记 ( Configuration 配置 )
    qrcode render 二维码扫描读取
  • 原文地址:https://www.cnblogs.com/864466244qq/p/8516956.html
Copyright © 2011-2022 走看看