#Java:Throwable、Exception、Error #运行时异常、编译期异常、错误 @FDDLC

本文详细介绍了Java中的异常体系,包括Throwable、Exception及其子类 RuntimeException 和 Error。Throwable是所有异常的顶层接口,包含getMessage和printStackTrace等方法。Exception分为运行时异常(如ArithmeticException)和编译期异常,编译期异常需在编译时处理,可以通过try-catch或throws声明。而Error通常指运行时错误,如OutOfMemoryError,出现后会导致程序非正常退出。
摘要由CSDN通过智能技术生成

一、Java中的异常体系

最重要的是Throwable、Exception、RuntimeException和Error。

 

二、Throwable:Exception和Error的顶头上司

主要方法有getMessage和printStackTrace。

例1:

class Solution{
    public static void main(String[] args) {
        Throwable throwable=new Throwable("I am throwable");
        System.out.println(throwable.getMessage());
    }
}

 

例2:

class Solution{
    public static void main(String[] args) {
        Throwable throwable=new Throwable(new Exception("我是Exception!"));
        System.out.println(throwable.getMessage());
    }
}

 

例3:

class Solution{
    public static void main(String[] args) {
        Throwable throwable=new Throwable();
        throwable.initCause(new Error("我是Error!"));
        throwable.printStackTrace();
    }
}

 

 

三、Exception

Java中的异常主要有运行时异常(RuntimeException)和编译期异常等。

1、运行时异常:编译时不会报错,运行时才可能触发。

被0除会触发ArithmeticException,该异常就属于运行时异常:

示例:

class Solution{
    public static void main(String[] args) {
        System.out.println(1/0);
    }
}

 

2、编译期异常:编译期就能发现的异常。现代IDE在代码编辑阶段也能感知到,并提醒程序员进行处理,处理的方式可以是抛出(在调用方法中throws),也可以是捕获(try catch)。

示例:未对潜在异常进行处理,IDEA给出红色警告!

若强制运行:

所以说,java也是有脾气的

 

行,java您是大爷,咱照做就是了

 

示例:抛出(throws)

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;

class Solution{
    public static void main(String[] args) throws ParseException {
        DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");
        System.out.println(dateFormat.parse("2020-12-1"));
    }
}

说明:throws ParseException可改成该异常的父类,比如Exception,Throwable。

 

示例:捕获(try catch)

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;

class Solution{
    public static void main(String[] args) {
        DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");
        try {
            System.out.println(dateFormat.parse("2020-12-1"));
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

 

抛出和捕获的区别:

异常被捕获后,try catch之后的代码可以接着执行:

上图显示,程序正常退出!

 

异常被抛出后,异常代码后面的代码不会被执行:

上图显示程序异常退出!

 

对比一下,显然捕获更合理,更主动!

 

 

四、Error

运行时才可能触发,一旦发生,程序就会非正常退出。

示例:OutOfMemoryError

class Solution{
    public static void main(String[] args) throws Exception {
        int[] arr=new int[1024*1024*1024];
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值