zoukankan      html  css  js  c++  java
  • Java异常

    异常概述:

    异常是指在程序运行过程中发生的异常事件 , 如0溢出,数组下标越界,找不到文件等,这些事件发生会导致程序不能正常运行。因此,为了加强程序的健壮性,在进行程序设计时,必须考虑可能发生的异常事件并要做出相应的处理。Java通过面向对象的方法来处理异常/。如果在一个方法的运行过程中发生了异常,则这个方法生成代表该异常的一个对象,并把它交给运行时系统,运行使系统会寻找相应的代码来处理繁盛的异常。我们吧生成异常对象帮把它交给运行时系统这一过程称为抛出(throw)一个异常。
    Java 异常体系 :
    Error  :  错误  出现错误引发程序崩溃
    Exception  : 分为 IOException 和  RuntimeException引起线程中断, 是所有异常的基类。
    checked Exception 检测异常,要求必须被捕获处理,比如IOException
    Runtime Exception 运行时异常,也叫做unchecked Exception
    异常的处理方式;
    一 : 积极的异常处理方式。 
    1 try {
    2            // 可能出现异常的代码块
    3 }catch (Exception e)// 括号内为异常的处理对象{
    4         // 捕获异常的处理方式
    5 }finally{
    6             // 无论有没有异常对象被捕获都会执行的代码
    7 }

    积极的异常处理方式的捕获顺序 ;

     1 public class ExceptionDemo2 {
     2     public static void main(String[] args) {
     3         String s = "abc";
     4     try{
     5         s.charAt(5);
     6     }catch(StringIndexOutOfBoundsException e){
     7         System.out.println("StringIndexOutOfBoundsException");
     8     }catch(IndexOutOfBoundsException e){
     9         System.out.println("IndexOutOfBoundsException");
    10     }catch (Exception e) {
    11         System.out.println("Exception");
    12     }
    13     }
    14 }

     

     二;  消极的异常处理方式:

    public void test() throws Exception{
            // 消极的异常处理方式, 表示当前方法一旦发生异常,则自己不做处理,而将异常交给上级方法进行处理.
    }

     Java 的异常处理机制:

    Java异常体系的关键字 :

    • throw  主动抛出异常

    • throws

    1. 写在方法上,表示当前方法会抛出一个异常
    2. 如果抛出的异常是checked Exception那么要求上级调用方法必须做出处理
    3. 如果抛出的异常是一个运行时异常,那么不做处理

    •  finally
      在积极的异常处理中最后一个代码块,表示当前逻辑一定会被执行 。
     自定义异常:
    java虽然为我们提供了很多种异常类,但并不能满足程序设计中不可预见的异常。有时候,我们希望在程序中自定义异常,来表示可能遇到的问题。Java提供的自定义异常可以满足程序员按需创建异常的要求。我们可以通过简单的继承已知异常类来创建我们的自定义异常类。创建异常类时,最简单的办法是使用编译器产生的缺省构造方法。要抛出自定义异常, 我们必要要有自定义的异常类。并且继承了RuntimeException。
    自定义异常类的使用:
    1 public class ExceptionDemo {
    2     public static void main(String[] args){
    3     test("zhangsan");
    4 } 
    5     public static void test(String s){
    6     throw new LoginException("您的账户密码错误: "+s);
    7 }
    8 }

     

    try catch finally 的执行顺序
    首先执行try,如果有异常执行catch,无论如何都会执行finally 
    一个函数中肯定会执行finally中的部分。 
    关于一个函数的执行过程是,当有return以后,函数就会把这个数据存储在某个位置,然后告诉主函数,我不执行了,接下来你执行吧,所以函数就会推出。 
    但是当一个函数中出现finally以后,finally永远都要执行,所以,就算try或者catch中已经执行了return了,但是这时函数不会退出,不会告诉主函数去执行,而是等待finally执行完了才回去告诉主函数去执行,这时候如果finally中出现了return的话,这次return的值就会覆盖掉try或者catch中的值,然后才会告诉主函数:我不执行了,你去执行吧。所以主函数会得到finally中的返回值。也就是说子函数的返回值永远是finally中的返回值(只要被调用的函数中有值)
  • 相关阅读:
    VBA操作IE
    Eclipse中Git图标表示内容
    sqldeveloper更改语言设定
    VBA-FileToFileUpdate
    VBA-UTF-8文件的操作
    Null项目参与排序
    阿里云的学生机如何开放全部端口
    .net core3.1 webapi + vue + element-ui upload组件实现文件上传
    .net core控制台使用log4net
    vue2.x中使用三元表达式绑定class的时候遇到的坑
  • 原文地址:https://www.cnblogs.com/thelovelybugfly/p/9642165.html
Copyright © 2011-2022 走看看