java基础检查和未检查异常处理详解
作者:guoyp2126 发布时间:2023-10-25 11:10:25
标签:异常处理,异常检查
程序在运行时如果出错,编译器会抛出异常,异常如果没有被捕捉处理,程序会终止运行。异常分为未检查异常和已检查异常,以下对这两类异常做进一步说明。
检查异常
已检查异常(checked exceptions),编译器强制要求捕获并处理可能发生的异常,不处理就不能通过编译,如:IOException、SQLException以及用户自定义的Exception异常。如下图所示,程序运行时会因为IO等错误导致异常,要求处理异常,需要手动处理关闭释放资源。
继续抛出,通过throws exception抛出,代码如下:
public static void readFile() throws FileNotFoundException {
String filename = "D:\\demo1.txt";
File file = new File(filename);
BufferedReader reader = null;
StringBuffer sbf = new StringBuffer();
reader = new BufferedReader(new FileReader(file));
}
在方法使用 throws FileNotFoundException ,将异常向上抛。
使用try catch或try catch finally对异常进行捕获然后进行处理,代码如下:
public static void main(String[] args) {
String filename ="D:\\demo.txt";
File file =new File(filename);
BufferedReader reader=null;
StringBuffer sbf = new StringBuffer();
try {
reader = new BufferedReader(new FileReader(file));
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
}
}
未检查异常
未检查异常(unchecked exceptions),这类异常也叫RuntimeException(运行时异常),编译器不要求强制处置的异常,如:NullPointerException,IndexOutOfBoundsException,VirtualMachineError等异常。如:以下代码向上抛出异常,但调用时编译器并不强制要求处理异常
public static void convert(String str) throws NumberFormatException{
Long num = Long.parseLong(str);
System.out.println(num);
}
调用方代码如下:
public static void main(String[] args) {
convert("ww123");
}
编译器并未出现强制要求使用处理异常,因为NumberFormatException异常是RuntimeException(运行时异常)。未检查异常通常处理方法为捕获、继续抛出和不处理,这类异常通常输出至控制台,编程人员手动的去查找问题。
来源:https://blog.csdn.net/guoyp2126/article/details/117464003
0
投稿
猜你喜欢
- 树的结构说得差不多了,现在我们来说说一种数据结构叫做哈希表(hash table),哈希表有是干什么用的呢?我们知道树的操作的时间复杂度通常
- 本文实例为大家分享了WPF ProgressBar实现实时进度的具体代码,供大家参考,具体内容如下简单测试,页面如图:利用上班的一点点空闲时
- 本文为大家分享了Tablayout简单的使用方法,供大家参考,具体内容如下一、TabLayout普通用法在项目中使用viewpager的时候
- 递归是一个非常有用的知识点。写点实例帮助自己记忆中间有过程代码首先一个javapojo类package com.qcf.po;import
- 定义枚举类型时本质上就是在定义一个类,只不过很多细节由编译器帮您补齐了,所以某些程度上,enum关键字的 作用就像是class或interf
- SpringCloud是分布式微服务架构的一站式解决方案,十多种微服务架构落地技术的集合体,俗称微服务全家桶SpringCloud和Spri
- 正在尝试分配更低的访问权限?在进行Java编程时会给我们报出如下提示怎么办?这里我们将给大家介绍详细的解决方法。首先,查看,控制台给出的提示
- 目录一、Eureka概述1、Eureka特点2、Eureka两大组件3、Eureka三大角色二、Eureka Server服务注册中心1、p
- 最近在公司用到外设,需要判断接入的外设的VendorId和ProductId,然后给大家说一下自己的学习成果把 ,首先我门可以通过andro
- 1.java创建自定义类数组方法:Student []stu = new Student[3];for(int i = 0; i <
- 前言在学习springboot 之后想结合着html做个小demo,无奈一直没掌握窍门,在多番的搜索和尝试下终于找到了配置的方法,使用thy
- 目录前言Hello World1.可以在 Spring Initializr上面添加,也可以手动在 pom.xml中添加如下代码∶2. 编写
- ListView是开发中最常用的控件了,但是总是会写重复的代码,浪费时间又没有意义。最近参考一些资料,发现一个万能ListView适配器,代
- TabBar在实际开发中导航栏是必不可少的控件,QtQuick Controls控件中可以使用TabBar来做导航栏,原始的导航栏是横向的,
- 一、概述当用户触摸屏幕的时候,会产生许多手势,例如down,up,scroll,filing等等。一般情况下,我们知道View类有个View
- 本文采用半译方式。在本文中,将会介绍 C# 7.2 中引入的新类型:Span 和 Memory,文章深入研究 Span<T&
- 本文实例为大家分享了java转树形结构工具类的具体代码,供大家参考,具体内容如下import com.alibaba.fastjson.JS
- 在你的jar文件当前目录中建立一个bat文件:内容是:注意文件名要对应@echo offSTART "commandServer&
- 对于clear与new Map的区别。我们首先来看一个例子,本例子是我在实际开发中遇到的,需求就是讲map放入到list中,说白了就是lis
- 小菜今年计算机专业大四了,学了不少软件开发方面的东西,也学着编了些小程序,踌躇满志,一心要找一个好单位。当投递了无数份简历后,终于收到了一个