章12——异常exception

news/2024/9/19 17:36:23/文章来源:https://www.cnblogs.com/gknives/p/18412862

异常
快捷键 ctrl + alt + t
选中 try-catch
如果进行异常处理,即使出现了异常,程序可以继续执行。

异常介绍
开发过程中的语法错误和逻辑错误不是异常。
执行过程中所发生的异常事件可分为如下两大类:

异常体系图


小结:

常见的运行时异常

没有关联的类不能进行上下转型

异常处理机制
两种:try-catch 和 throws

比如如果try中有些重要的资源一定要关闭,那么我们就可以把资源的关闭放到finally代码块中。
如果没有finally也是允许的。
快捷键:ctrl + alt + t

最终传回JVM时:处理机制:
第一步:输出异常信息
第二步:中断程序

当我们对异常没有处理时(没有显式地使用 try-catch 或 throw),默认时有个throws

public class TryCatchDetail {public static void main(String[] args) {try {String str = "abc";int a = Integer.parseInt(str);System.out.println(a);} catch (NumberFormatException e) {System.out.println("异常信息=" + e.getMessage());}finally {System.out.println("finally");}System.out.println("going on...");}
}


父子顺序:拒绝垄断。


但是此时我们的善后工作在finally中可以被执行。

练习实践:保证整数输入的 try-catch

import java.util.Scanner;public class TryCatchExercise {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int num = 0;while (true){try {num = Integer.parseInt(scanner.next());break;} catch (NumberFormatException e) {//返回到循环起始点。}}}
}

throws异常处理

import java.io.FileInputStream;
import java.io.FileNotFoundException;public class Throws01 {public static void main(String[] args) {}//使用抛出异常,让调用f1方法的调用者(常常是另一个方法)处理。//此处用父类Exception也可以。//throws关键字后也可以是 异常列表,即可以抛出多个异常。public void f1() throws FileNotFoundException, NullPointerException{FileInputStream fis = new FileInputStream("d://aa.txt");}
}

throws细节


而如果抛出了运行异常,则不用处理,如果抛出了编译异常,则要处理,不论方法中到底有没有该异常。

自定义异常

例子:

一般情况下,我们继承运行时异常,其好处在于,我们可以使用默认的处理机制。

throw 和 throws 的区别

本章作业
没太明白

public class EcmDef {public static void main(String[] args) {//需要在程序中配置参数EcmDef ecmDef = new EcmDef();try {if(args.length !=2){throw new ArrayIndexOutOfBoundsException("参数个数不对");}int n1 = Integer.parseInt(args[0]);int n2 = Integer.parseInt(args[1]);double res = ecmDef.cal(n1,n2);System.out.println(res);} catch (ArrayIndexOutOfBoundsException e) {System.out.println(e.getMessage());}catch (NumberFormatException e){System.out.println("参数格式不对");}catch (ArithmeticException e){System.out.println("出现了除0的异常");}}public double cal(int n1, int n2){return n1/n2;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/796729.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

APB总线总结

APB总结 一、简介 APB提供了一个低功耗的接口,并降低了接口的复杂性。APB接口用在低带宽和不需要高性能总线的外围设备上。APB是非流水线结构,所有的信号仅与时钟上升沿相关,这样就可以简化APB外围设备的设计流程,每个传输至少耗用两个周期。 二、信号列表信号名 来源 描述…

面试- Web安全

XSS攻击(跨站脚本攻击)XSS预防 < < > >XSRF(CSRF)攻击(跨站请求伪造)就像是你在不知情的情况下,被别人利用你的权限发起了某个你没打算进行的请求。重点是可以把你的用户信息给带过去,你不知不觉就帮我付款了。XSS 是恶意代码“潜伏”在页面上,欺骗你去执行…

k8s 中的 Service 简介【k8s 系列之二】

〇、前言 k8s 集群中的每一个 Pod 都有自己的 IP 地址,那么是不是有 IP 了,访问起来就简单了呢,其实不然。 因为在 k8s 中 Pod 不是持久性的,摧毁重建将获得新的 IP,客户端通过会变更 IP 来访问显然不合理。另外 Pod 还经常会通过多个副本来实现负载均衡,客户端如何高效的…

软工作业二:论文查重系统

这个作业属于哪个课程 <计科22级34班>这个作业要求在哪里 [<作业要求>](个人项目 - 作业 - 计科22级34班 - 班级博客 - 博客园 (cnblogs.com))这个作业的目标 通过实际编程任务,全面提升学生在编程、算法、项目管理、性能优化、代码测试和版本控制等方面的能力,为…

面试-JS基础知识-作用域和闭包

问题this的不同应用场景 手写bind函数 实际开发中闭包的应用场景,举例说明 创建10个<a>标签,点击的时候弹出来对应的序号作用域:某个变量的合法使用范围全局 函数 块级** 自由变量上面图的最里面的红框————a a1 a2都是自由变量,因为都没有被定义。会一层一层往上…

学习高校课程-软件设计模式-软件设计原则(lec2)

软件设计原则Feature of Good Design (1) 优秀设计的特点(一) Code reuse 代码复用 – Challenge: tight coupling between components, dependencies on concrete classes instead of interfaces, hardcoded operations – Solution: design patterns – 挑战:组件之间的紧…

ATTCK红队评估(红日靶场4)

靶场介绍本次靶场渗透反序列化漏洞、命令执行漏洞、Tomcat漏洞、MS系列漏洞、端口转发漏洞、以及域渗透等多种组合漏洞,希望大家多多利用。 环境搭建 机器密码 WEB主机 ubuntu:ubuntuWIN7主机 douser:Dotest123(DC)WIN2008主机 administrator:Test2008网络配置111网段是web的网…

Markdown随笔

冰冻三尺非一日之寒,持之以恒方位始终。 Markdown语法讲解标题一共六级标题分别为Ctrl+1~6: 一级 二级 三级 四级 五级 六级字体 粗体 粗斜体 斜体 删除线引用一个大于号>分割线图片超链接 点击进入百度百科列表 数字加上空格(有序) 点加上空格(无序)表格姓名 性别 年…

tarjan里的定义

强连通分量 - OI Wiki (oi-wiki.org)从以u为根的子树中的任意点出发。单次到达(从这个点指向某个点,有一条边) 的这些点中的dfn的最小值以v为根的子树,包含在以u为根的子树中,low[v]所用的子节点,一定也可以被low[u],这个点一定在以u为根的子树里,所以用low[v] 从u这个…

南沙csp-j/s一对一家教陈老师解题:1317:【例5.2】组合的输出

​【题目描述】排列与组合是常用的数学方法,其中组合就是从n个元素中抽出r个元素(不分顺序且r≤n),我们可以简单地将n个元素理解为自然数1,2,…,n,从中任取r个数。 现要求你用递归的方法输出所有组合。 例如n=5,r=3,所有组合为: 1 2 3 1 2 4 1 2 5 1 3 4 1 …

First day01

Markdown学习 二级标题 字体 Hello World Hello World Hello World Hello World Hello World 引用选择java走上人生巅峰分割线图片 ![截图](C:\Users\邢其俊\Pictures\Screenshots\屏幕截图 2024-09-13 180016.png)超链接 [点击跳转到狂神博客](仓库 - 狂神说 (kuangstudy) - G…

ThreeJS Shader的效果样例光影墙、扩散面(四)

一、实现一个光影墙1. 根据自定义坐标点,输出一个光影墙/*** 添加光影墙*/ function addLightWall() {const geometry = new THREE.BufferGeometry();const vertices = new Float32Array([5, 0, 2,3, 0, 5,-2, 0, 5,-4, 0, 2,-4, 5, 2,-2, 5, 5,3, 5, 5,5, 5, 2]);const indic…