浅谈异常结构图、编译期异常和运行期异常的区别

 更新时间:2016年09月30日 11:28:29   投稿:jingxian  
下面小编就为大家带来一篇浅谈异常结构图、编译期异常和运行期异常的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

异常处理一般有2种方式,要么捕获异常try-catch,要么抛出异常throws

如果一个方法后面抛出一个运行时期异常(throws RuntimeException),调用者无须处理

如果一个方法后面抛出一个编译时期异常,调用者必须处理,或者抛出或者try-catch;

运行时期的异常一般都不处理,一般是程序逻辑上的错误,比如分母为0作为除数了。。。

注意如果在try里面出现了异常后,try下面的语句就不会执行,回去寻找catch匹配异常处理会,接下来的语句会处理的(也就是在try-catch-finally之后的语句会继续执行)

/*
 * 有些时候,我们是可以对异常进行处理的,但是又有些时候,我们根本就没有权限去处理某个异常。
 * 或者说,我处理不了,我就不处理了。
 * 为了解决出错问题,Java针对这种情况,就提供了另一种处理方案:抛出。
 *
 * 格式:
 *         throws 异常类名
 *         注意:这个格式必须跟在方法的括号后面。
 *
 * 注意:
 *         尽量不要在main方法上抛出异常。
 *         但是我讲课为了方便我就这样做了。
 *
 * 小结:
 *         编译期异常抛出,将来调用者必须处理。
 *         运行期异常抛出,将来调用可以不用处理。
 */

凡是RuntimeException及其子类的异常都不处理(不抛出也不捕获),如果真的知道运行时会有异常抛出的话,,那么直接检查修改程序的逻辑就OK!!!

package 异常;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class ExceptionDemo {
	public static void main(String[] args) {
		System.out.println("调用方法之前");
		try {
			method();// 编译时期异常抛出必须处理
		} catch (ParseException e) {
			e.printStackTrace();
		}
		System.out.println("调用方法1后在调用方法二");
		method2();
	}

	public static void method2() throws RuntimeException{
		int a = 10;
		int b = 0;
		System.out.println("a/b="+a/b);//运行时期异常可以不用处理,如果处理为抛出异常throws,那么调用者也无需必须处理异常
	}

	public static void method() throws ParseException {
		String string = "2015-05-30";
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//会逐步匹配string格式,不对就抛异常
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//如果string只有2015-05-30,没有后面的,那么会跑异常,因为这个sdf2无法匹配HH:mm:ss
		Date date = sdf.parse(string);
		System.out.println("日期格式化:" + date);
	}

}

异常结构图:

error的异常我们程序员不用处理也处理不了,

runtimeexception的运行时期异常我们也无需处理,

其他的就是编译时期的异常我们就要处理了。

以上就是小编为大家带来的浅谈异常结构图、编译期异常和运行期异常的区别的全部内容了,希望对大家有所帮助,多多支持脚本之家~

您可能感兴趣的文章:

相关文章

  • 详解Android开发中Fragment的使用

    详解Android开发中Fragment的使用

    这篇文章主要介绍了详解Android开发中Fragment的使用,包括Java代码中调用Fragment的方法,需要的朋友可以参考下
    2015-07-07
  • Java语言中&&与& ||与|的区别是什么

    Java语言中&&与& ||与|的区别是什么

    这篇文章主要介绍了Java语言中&&与& ||与|的区别是什么的相关资料,需要的朋友可以参考下
    2017-04-04
  • 基于java实现websocket代码示例

    基于java实现websocket代码示例

    这篇文章主要介绍了基于java实现websocket代码示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • Java线程池用法实战案例分析

    Java线程池用法实战案例分析

    这篇文章主要介绍了Java线程池用法,结合具体案例形式分析了java线程池创建、使用、终止等相关操作技巧与使用注意事项,需要的朋友可以参考下
    2019-10-10
  • Java项目实现寻找迷宫出路

    Java项目实现寻找迷宫出路

    这篇文章主要为大家详细介绍了Java项目实现寻找迷宫出路,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • Java ArrayList与LinkedList及HashMap容器的用法区别

    Java ArrayList与LinkedList及HashMap容器的用法区别

    这篇文章主要介绍了Java ArrayList与LinkedList及HashMap容器的用法区别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-07-07
  • Java如何配置IDEA自定义注释

    Java如何配置IDEA自定义注释

    在IDEA中设置自动创建类和方法的注释可以提高编码效率,确保代码的一致性和可读性,首先,对于创建类的注释,可以通过修改File→Settings→File and Code Templates→Class的模板来实现,其次,对于方法注释
    2024-10-10
  • Java中的线程中断机制和LockSupport详解

    Java中的线程中断机制和LockSupport详解

    这篇文章主要介绍了Java中的线程中断机制和LockSupport详解,在Java中没有办法立即停止一条线程,然而停止线程却显得尤为重要,如取消一个耗时操作,因此,Java提供了一种用于停止线程的协商机制中断,也即中断标识协商机制,需要的朋友可以参考下
    2023-09-09
  • Java中easypoi的使用之导入校验

    Java中easypoi的使用之导入校验

    因工作需要,使用easypoi导入表格,并进行校验,将表格中有问题的地方,给出提示信息,以表格形式返回,下面这篇文章主要给大家介绍了关于Java中easypoi的使用之导入校验的相关资料,需要的朋友可以参考下
    2023-03-03
  • Mybatis 入参类型方式全面详解

    Mybatis 入参类型方式全面详解

    这篇文章主要为大家介绍了Mybatis入参的类型方式全面示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06

最新评论