Java 手动抛异常
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 手动抛异常的更多相关文章
- java通过抛异常来返回提示信息
结论:如果把通过抛异常的方式得到提示信息,可以使用java.lang.Throwable中的构造函数: public Throwable(String message) { fillInStackTr ...
- JAVA主动抛异常的几种方式及捕捉结果输出对比
测试代码: /** * 测试异常抛出及捕捉 */ @Test public void test() { try { this.testA(); } catch (Exception ex) { Sys ...
- Java throw:异常的抛出怎么回事
到目前为止,你只是获取了被Java运行时系统抛出的异常.然而,程序可以用throw语句抛出明确的异常.Throw语句的通常形式如下: throw ThrowableInstance;这里,Thr ...
- java 检查抛出的异常是否是要捕获的检查性异常或运行时异常或错误
/** * Return whether the given throwable is a checked exception: * that is, neither a RuntimeExcepti ...
- Android ADT插件更新后程序运行时抛出java.lang.VerifyError异常解决办法
当我把Eclipse中的 Android ADT插件从21.1.0更新到22.0.1之后,安装后运行程序抛出java.lang.VerifyError异常. 经过调查,终于找到了一个有效的解决办法: ...
- 千万别在Java类的static块里写会抛异常的代码!
public class Demo{ static{ // 模拟会抛异常的代码 throw new RuntimeException(); } } 如果你在Java类的static块里写这样会抛异常的 ...
- 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 ...
- 遍历List时删除元素导致List抛出java.util.ConcurrentModificationException异常
1 public static void main(String[] args) { 2 List<String> list = new ArrayList<String>() ...
- Jetty+json-lib库抛异常的问题解决过程(java.lang.NoClassDefFoundError: net/sf/json/JSONObject)
一.之前抛异常是将json库改成了fastjson解决的,参见: http://www.cnblogs.com/gossip/p/5369670.html 异常信息: 二.解决步骤 ...
- 【JAVA】学习路径64-补充-编写一个会抛异常的方法
有一些方法,在调用的时候有可能会出错,所以我们使用这些方法的时候会使用try catch. 比如InputStream里面的read()方法等等,那么这些方法是怎么实现抛异常的效果的呢? 能抛异常的方 ...
随机推荐
- 【发现一个问题】VictoriaMetrics中,vm-select与vm-storage之间的协议存在版本兼容性问题
使用中发现,vm-select 1.76版本,查询vm-storage的1.70版本,报以下错误: cannot execute rpcName="search_v5" on vm ...
- PLC检测
填空题1 填空A-E 程序图一 第一训练题的程序,一个是用常开触点,一个是用上升沿指令,建议选上升沿指令编程 程序二 程序图三 程序四 程序五
- 强化学习从基础到进阶-常见问题和面试必知必答[8]:近端策略优化(proximal policy optimization,PPO)算法
强化学习从基础到进阶-常见问题和面试必知必答[8]:近端策略优化(proximal policy optimization,PPO)算法 1.核心词汇 同策略(on-policy):要学习的智能体和与 ...
- 8.4 ProcessHeap
ProcessHeap 是Windows进程的默认堆,每个进程都有一个默认的堆,用于在进程地址空间中分配内存空间.默认情况下ProcessHeap由内核进行初始化,该堆中存在一个未公开的属性,它被设置 ...
- Python 提取图片中的GPS信息
JPG图片中默认存在敏感数据,例如位置,相机类型等,可以使用Python脚本提取出来,加以利用,自己手动拍摄一张照片,然后就能解析出这些敏感数据了,对于渗透测试信息搜索有一定帮助,但有些相机默认会抹除 ...
- LyScript 插件实现UPX寻找入口
LyScript 插件可实现对压缩壳的快速脱壳操作,目前支持两种脱壳方式,一种是运用API接口自己编写脱壳过程,另一种是直接加载现有的脱壳脚本运行脱壳. 插件地址:https://github.com ...
- CF526F Pudding Monsters 题解
题目链接:CF 或者 洛谷 析合树真是连续段问题的降智神器 先看下题目的一些特殊性,每行每列恰好有一个棋子.考虑特殊性,\(n \times n\) 的棋盘,那么就该判断是否有 \(n\) 个棋子,容 ...
- Pandas resample数据重采样
随机抽样,是统计学中常用的一种方法,它可以帮助我们从大量的数据中快速地构建出一组数据分析模型.在 Pandas 中,如果想要对数据集进行随机抽样,需要使用 sample() 函数. sample() ...
- Python实现希尔排序、快速排序、归并排序
快速排序 快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所 ...
- Python list 中删除元素的方法
在python列表中删除元素主要分为以下3种场景: 根据目标元素所在的索引位置进行删除,可以使用del关键字或pop()方法:根据元素本身的值进行删除,可使用列表(list类型)提供的remove() ...