1 package com.bytezero.throwable;
2
3 import java.io.File;
4 import java.io.FileInputStream;
5 import java.io.FileNotFoundException;
6 import java.io.IOException;
7
8 import org.junit.Test;
9
10 /**
11 *
12 * @Description 异常处理 :
13 * @author Bytezero·zhenglei! Email:420498246@qq.com
14 * @version
15 * @date 上午8:35:40
16 * @ 一:异常处理 : 抓抛模型
17 *
18 * 过程一: “抛”:程序在正常执行的过程中,一旦出现异常,就会在异常代码处生成
19 * 一个对应异常类的对象。并将此对象输出。
20 * 一旦抛出对象以后,其后的代码不再执行。
21 *
22 * 关于异常对象的产生:① 系统自动生成的异常对象
23 * ② 手动生成一个异常对象,并抛出 throw。
24 *
25 *
26 *
27 *
28 * 过程二:“抓”:可以理解为 异常的处理方式,:①try-catch-finally ②throws
29 *
30 *
31 * 二:try-catch-finally的使用
32 *
33 * try{
34 *
35 * //可能出现异常的代码
36 *
37 * }catch(异常类型1 变量名1){
38 *
39 * //处理异常的方式1
40 *
41 * }catch(异常类型2 变量名2){
42 *
43 * //处理异常的方式2
44 *
45 * }catch(异常类型3 变量名3){
46 *
47 * //处理异常的方式3
48 *
49 * }
50 * .....
51 * finally{
52 *
53 * //一定会执行的代码
54 * }
55 *
56 * 说明:
57 * 1.finally是可选的。
58 * 2.使用try将可能出现的代码包装起来,在执行过程中,一旦出现异常,就会生成
59 * 一个对应异常的对象,根据此对象的类型,去catch中进行匹配
60 * 3.一旦try中的异常对象匹配到某一个catch时,就进入catch中进行异常的处理。一旦
61 * 处理完成后,一旦处理完成,就跳出当前的try catc 结构(在没有写finally的情况)。继续
62 * 执行其后的代码
63 * 4.catch中的异常类型 如果没有子父类关系,则说声明在上,都可以
64 * catch中的异常类型 如果满足子父类关系,则要求子类一定声明在父类的上面,否则,报错
65 *
66 * 5.常用的异常对象处理方式:①String getMessage()
67 * ②printStackTrace()
68 *
69 * 6.在try结构中声明的变量,再出了try结构以后,就不能再被调用
70 *
71 * 7.try - catch-finally结构可以相互嵌套。
72 *
73 *
74 * 体会1:使用try-catch-finally处理编译异常时,使得程序在编译时就不在报错,但是运行时仍可能
75 * 报错,相当于我们使用try - catch -finally 将一个编译时可能出现的异常,延迟到运行时出现。
76 *
77 *
78 * 体会2:开发中,由于运行时异常比较常见,所有我们通常就不针对运行时异常编写try-catch-finally了,
79 * 针对于编译时异常,我们说一定要考虑异常的处理。
80 *
81 */
82 public class ExceptionTest2 {
83
84
85 @Test
86 public void test2() {
87
88 try {
89
90 File file = new File("hello.txt");
91 FileInputStream fis = new FileInputStream(file);
92
93 int data = fis.read();
94 while(data != -1) {
95 System.out.println((char)data);
96 data = fis.read();
97
98 }
99 fis.close();
100 }catch(FileNotFoundException e){
101
102 e.printStackTrace();
103
104 }catch(IOException e) {
105 e.printStackTrace();
106 }
107
108 }
109
110
111 @Test
112 public void test1() {
113
114 String str = "123";
115 str = "abc";
116 int num = 0;
117 try {
118 Integer.parseInt(str);
119
120 System.out.println("Hello----------1");
121
122 }catch(NullPointerException e) {
123 System.out.println("出现了空指针异常");
124
125 }catch(NumberFormatException e) {
126
127 // System.out.println("出现 数值转换 异常了");
128 //String getMessage():
129 //System.out.println(e.getMessage());
130 //printStackTrace
131 e.printStackTrace();
132
133 }catch(Exception e) {
134
135 System.out.println("出现了 异常 ");
136 }
137
138 //System.out.println(num); //不可以调用,因为出了 try 结构
139
140 System.out.println(num);
141
142 System.out.println("Hello----------2");
143
144 }
145
146
147
148
149
150 }
 1 package com.bytezero.throwable;
2
3 public class StudentsTest {
4
5 public static void main(String[] args) {
6 try {
7 Student s = new Student();
8 s.regist(-1001);
9 System.out.println(s);
10 }catch(Exception e){
11 // e.printStackTrace();
12 System.out.println(e.getMessage());
13 }
14 }
15 }
16
17 class Student{
18
19 int id;
20
21 public void regist(int id) throws Exception {
22
23 if(id > 0) {
24
25 this.id = id;
26 }else {
27 //System.out.println("您输入的数据非法!");
28
29 //手动抛出异常
30 //throw new RuntimeException("您输入的数据非法!");
31 throw new Exception("您输入的数据非法!");
32 //throw new MyException("数据非法-----自定义异常类");
33 }
34
35 }
36
37 @Override
38 public String toString() {
39 return "Student [id=" + id + "]";
40 }
41
42
43
44
45 }

Java 手动抛异常的更多相关文章

  1. java通过抛异常来返回提示信息

    结论:如果把通过抛异常的方式得到提示信息,可以使用java.lang.Throwable中的构造函数: public Throwable(String message) { fillInStackTr ...

  2. JAVA主动抛异常的几种方式及捕捉结果输出对比

    测试代码: /** * 测试异常抛出及捕捉 */ @Test public void test() { try { this.testA(); } catch (Exception ex) { Sys ...

  3. Java throw:异常的抛出怎么回事

    到目前为止,你只是获取了被Java运行时系统抛出的异常.然而,程序可以用throw语句抛出明确的异常.Throw语句的通常形式如下:    throw ThrowableInstance;这里,Thr ...

  4. java 检查抛出的异常是否是要捕获的检查性异常或运行时异常或错误

    /** * Return whether the given throwable is a checked exception: * that is, neither a RuntimeExcepti ...

  5. Android ADT插件更新后程序运行时抛出java.lang.VerifyError异常解决办法

    当我把Eclipse中的 Android ADT插件从21.1.0更新到22.0.1之后,安装后运行程序抛出java.lang.VerifyError异常. 经过调查,终于找到了一个有效的解决办法: ...

  6. 千万别在Java类的static块里写会抛异常的代码!

    public class Demo{ static{ // 模拟会抛异常的代码 throw new RuntimeException(); } } 如果你在Java类的static块里写这样会抛异常的 ...

  7. AOP拦截日志类,抛异常:java.lang.IllegalStateException: It is illegal to call this method if the current request is not in asynchronous mode

    AOP的日志拦截类中,抛出异常: java.lang.IllegalStateException: It is illegal to call this method if the current r ...

  8. 遍历List时删除元素导致List抛出java.util.ConcurrentModificationException异常

    1 public static void main(String[] args) { 2 List<String> list = new ArrayList<String>() ...

  9. Jetty+json-lib库抛异常的问题解决过程(java.lang.NoClassDefFoundError: net/sf/json/JSONObject)

      一.之前抛异常是将json库改成了fastjson解决的,参见: http://www.cnblogs.com/gossip/p/5369670.html     异常信息:     二.解决步骤 ...

  10. 【JAVA】学习路径64-补充-编写一个会抛异常的方法

    有一些方法,在调用的时候有可能会出错,所以我们使用这些方法的时候会使用try catch. 比如InputStream里面的read()方法等等,那么这些方法是怎么实现抛异常的效果的呢? 能抛异常的方 ...

随机推荐

  1. elementUI(datepicker)限制日日期的选择

    指定起始日期,后选的将会受到先选的限制 参考地址 https://www.jianshu.com/p/c59c8ef6c500 实现方法不难,利用了 change 事件,动态改变 picker-opt ...

  2. cookie的设置读取

    <script> // 设置cookie值哈 let username = '我是cookie' document.cookie = "name=" + usernam ...

  3. 解锁搜索新境界!让文本语义匹配助你轻松找到你需要的一切!(快速上手baseline)

    解锁搜索新境界!让文本语义匹配助你轻松找到你需要的一切!(快速上手baseline) 实现了多种相似度计算.匹配搜索算法,支持文本.图像,python3开发,pip安装,开箱即用. 文本相似度计算(文 ...

  4. Python 实现Ping命令状态检测

    ping 是一种因特网包探索器,用于测试网络连接量的程序,Ping是工作在TCP/IP网络体系结构中应用层的一个服务命令,主要是向特定的目的主机发送 ICMP 请求报文,测试目的站是否可达及了解其有关 ...

  5. pywin32 实现寻找窗体并模拟按键

    import win32api import win32gui, win32con import win32clipboard import re import time class cWindow: ...

  6. webpack重新打包清空dist文件夹的问题

    1.5.20.0以上版本才支持output属性里的clean:true 5.20.0+ 5.20以下版本清除dist文件内容一般使用插件 clean-webpack-plugin, 5.20版本以后o ...

  7. Vite4+Typescript+Vue3+Pinia 从零搭建(2) - ts配置

    项目代码同步至码云 weiz-vue3-template 关于tsconfig的配置字段可查看其他文档,如 typeScript tsconfig配置详解 tsconfig.json 文件修改如下: ...

  8. 深入浅出Java多线程(八):volatile

    引言 大家好,我是你们的老伙计秀才!今天带来的是[深入浅出Java多线程]系列的第八篇内容:volatile.大家觉得有用请点赞,喜欢请关注!秀才在此谢过大家了!!! 在当今的软件开发领域,多线程编程 ...

  9. (python)做题记录||2024.2.4||题目是codewars的【 All Balanced Parentheses】

    题目链接:https://www.codewars.com/kata/5426d7a2c2c7784365000783/python 我的解决方案: def balanced_parens(n): # ...

  10. XD刷机中执行reclaimdisks.sh的作用

    之前刷机提到在使用OEDA进行一键部署前,需先在所有DB节点上运行reclaimdisks.sh,也提到观察会释放pvs/vgs/lvs相对应的剩余空间. 本文以一套X8环境为例,来看下具体的表现,以 ...