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()方法等等,那么这些方法是怎么实现抛异常的效果的呢? 能抛异常的方 ...
随机推荐
- 使用Java读取Excel文件数据
通过编程方式读取Excel数据能实现数据导入.批量处理.数据比对和更新等任务的自动化.这不仅可以提高工作效率还能减少手动处理的错误风险.此外读取的Excel数据可以与其他系统进行交互或集成,实现数据的 ...
- 紫 distance
仅此纪念我爆掉的T3 紫,即RE,运行出错,梦幻,而又不失杀气 根据<雪distance>改编,分为提交前,评测前,评测时,评测后 你说我考试AK,可我却运行出错 任凭无尽的懊悔将我淹没, ...
- 开源IM项目OpenIM单聊及万人群压测报告
单聊压测结论: 华为云主机s3一台:8核16G内存,网络带宽10Mb,普通磁盘(非SSD) 同时在线及压测客户端数量:1万 每秒钟发送消息量:2300条: 从发送到对方接收平均消息延时:5秒 群聊压测 ...
- 补齐短板-开源IM项目OpenIM关于初始化/登录/好友接口文档介绍
OpenIM文档方面的建设一直远远落后于开发, 也经常被开发者诟病,在接下来一周的时间里,我们重点补齐文档,让开发者更轻松接入.由于app sdk底层都是go来实现,所以本文先写一个模板和框架,在接下 ...
- Docker 安装 MySQL8 数据库
创建数据卷 mkdir -p /usr/mysql/conf /usr/mysql/data chmod -R 755 /usr/mysql/ 创建配置文件 vim /usr/mysql/conf/m ...
- C/C++ 实现切片免杀的思路
今天突然想到了一个好玩的免杀思路,原理就是想办法切断磁盘特征与内存特征,关于沙盒免杀我寻思着,这样可以将不同的的DLL映射到内存,在内存中他们的特征也是被切断的,在注入器上做判断如果是沙盒则不加载,不 ...
- django orm 筛选
import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "test.setting") import ...
- centos离线安装chrony
环境 CentOS Linux release 7.9.2009 (Core) 工具 chrony-2.2.1.tar.gz 下载地址:https://download.tuxfamily.org/c ...
- PHP的无限极分类
PHP的无限极分类 一.使用数据表 添加from字段 id name parent_id from 1 中国 0 0 2 广东 1 0,1 3 深圳 2 0,1,2 4 龙华 3 0,1,2,3 5 ...
- Florr 从新手到大佬
Florr 从新手到大佬 新手上路 首先在这里,你会遇到一些简单的教程.按照教程完成,也可以参考链接里的内容. 装备分为一下几种: $ \color{#7eef6D} \text{Common} $ ...