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. 【发现一个问题】VictoriaMetrics中,vm-select与vm-storage之间的协议存在版本兼容性问题

    使用中发现,vm-select 1.76版本,查询vm-storage的1.70版本,报以下错误: cannot execute rpcName="search_v5" on vm ...

  2. PLC检测

    填空题1 填空A-E 程序图一 第一训练题的程序,一个是用常开触点,一个是用上升沿指令,建议选上升沿指令编程 程序二 程序图三 程序四 程序五

  3. 强化学习从基础到进阶-常见问题和面试必知必答[8]:近端策略优化(proximal policy optimization,PPO)算法

    强化学习从基础到进阶-常见问题和面试必知必答[8]:近端策略优化(proximal policy optimization,PPO)算法 1.核心词汇 同策略(on-policy):要学习的智能体和与 ...

  4. 8.4 ProcessHeap

    ProcessHeap 是Windows进程的默认堆,每个进程都有一个默认的堆,用于在进程地址空间中分配内存空间.默认情况下ProcessHeap由内核进行初始化,该堆中存在一个未公开的属性,它被设置 ...

  5. Python 提取图片中的GPS信息

    JPG图片中默认存在敏感数据,例如位置,相机类型等,可以使用Python脚本提取出来,加以利用,自己手动拍摄一张照片,然后就能解析出这些敏感数据了,对于渗透测试信息搜索有一定帮助,但有些相机默认会抹除 ...

  6. LyScript 插件实现UPX寻找入口

    LyScript 插件可实现对压缩壳的快速脱壳操作,目前支持两种脱壳方式,一种是运用API接口自己编写脱壳过程,另一种是直接加载现有的脱壳脚本运行脱壳. 插件地址:https://github.com ...

  7. CF526F Pudding Monsters 题解

    题目链接:CF 或者 洛谷 析合树真是连续段问题的降智神器 先看下题目的一些特殊性,每行每列恰好有一个棋子.考虑特殊性,\(n \times n\) 的棋盘,那么就该判断是否有 \(n\) 个棋子,容 ...

  8. Pandas resample数据重采样

    随机抽样,是统计学中常用的一种方法,它可以帮助我们从大量的数据中快速地构建出一组数据分析模型.在 Pandas 中,如果想要对数据集进行随机抽样,需要使用 sample() 函数. sample() ...

  9. Python实现希尔排序、快速排序、归并排序

    快速排序 快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所 ...

  10. Python list 中删除元素的方法

    在python列表中删除元素主要分为以下3种场景: 根据目标元素所在的索引位置进行删除,可以使用del关键字或pop()方法:根据元素本身的值进行删除,可使用列表(list类型)提供的remove() ...