zoukankan      html  css  js  c++  java
  • Java异常处理-捕获和处理异常

    java程序中的异常我们可以捕获然后处理,这样后面的程序就可以继续执行了;

    类似出了交通事故,交警立马出动 拖车的拖车 调解的调解 很快恢复路段行驶;

    在java中,我们用try-catch来捕获异常 

    try...cacth...finally

    前面的代码我们用try...catch...来捕获下

    package com.java1234.chap04.sec01;
     
    public class ExceptionDemo {
     
        public static void main(String[] args) {
            String str="123a";
            try{
                int a=Integer.parseInt(str);          
            }catch(NumberFormatException e){
                e.printStackTrace();
            }
            System.out.println("继续执行");
        }
    }

    我们发现 虽然报错了 但是程序依然继续执行了;

    当然通过查看jdk api,我们发现Exception是异常类的老祖宗,在捕获异常的时候,假如我们不确定会抛出什么异常,

    我们可以写多个异常捕获:

    类似如下代码:

    package com.java1234.chap04.sec02;
     
    public class Demo1 {
     
        public static void main(String[] args) {
            String str="123a";
            try{
                int a=Integer.parseInt(str);          
            }catch(NullPointerException e){
                e.printStackTrace();
            }catch(NumberFormatException e){
                e.printStackTrace();
            }catch(Exception e){
                e.printStackTrace();
            }
            System.out.println("继续执行");
        }
    }

    注意 由上往下的异常 必须范围同级别或者更高;否则编译报错;

    try...cacth...finally 假如我们有种需求,不管有没有发生异常,比如执行某些代码,这时候,

    finally就派上用场了;

    我们给下实例,视频中会详细讲述:

    package com.java1234.chap04.sec02;
     
    public class Demo2 {
     
        public static void testFinally(){
            String str="123a";
            try{
                int a=Integer.parseInt(str);
                System.out.println(a);
            }catch(Exception e){
                e.printStackTrace();
                System.out.println("exception");
                return;
            }finally{
                System.out.println("finally end");
            }
            System.out.println("end");
        }
         
        public static void main(String[] args) {
            testFinally();
        }
    }

    运行输出:

    ava.lang.NumberFormatException: For input string: "123a"
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
        at java.lang.Integer.parseInt(Integer.java:580)
        at java.lang.Integer.parseInt(Integer.java:615)
        at com.java1234.chap04.sec02.Demo2.testFinally(Demo2.java:8)
        at com.java1234.chap04.sec02.Demo2.main(Demo2.java:21)
    exception
    finally end

    我们发现 finally里面的都会执行 但是try catch后面的代码未必会执行;

  • 相关阅读:
    wx-charts 微信小程序图表 -- radarChart C# .net .ashx 测试
    C# dev SearchLookUpEdit 和 RepositoryItemSearchLookUpEdit 测试
    C# Dev XtraReport 简单测试
    SQL查询,关联查询的区别 (LEFT JOIN 、LEFT OUTER JOIN、INNER JOIN)
    NPOI 读取Excel文件
    C# 截屏
    C# 程序运行进度显示Lable
    gridcontrol 添加行删除行
    C# 任务 数据加载不影响其他操作
    ChartControl ViewType.Pie3D 用法测试
  • 原文地址:https://www.cnblogs.com/xyg-zyx/p/9833392.html
Copyright © 2011-2022 走看看