6.4-全栈Java笔记:异常处理办法(下)

自定义异常

在程序中,可能会遇到任何标准异常类都没有充分的描述清楚的问题,这种情况下可以创建自己的异常类。

从Exception类或者它的子类派生一个子类即可 。

习惯上,定义的类应该包含2个构造器:一个是默认的构造器,另一个是带有详细信息的构造器。

【示例1】自定义异常类

class    IllegalAgeException      extends   Exception {

public IllegalAgeException   () {

}

public IllegalAgeException   (String    msg) {

super(msg);

}

}

示例2】自定义异常类的使用


class Person {

private String name;

private int age;

public void setName(String name) {

this.name = name;

}

public void setAge(int age) {

if (age < 0)

throw new IllegalAgeException   ("人的年龄不应该为负数");

this.age = age;

}

public String toString() {

return "name is " + name + " and age   is " + age;

}

}

public class MyExceptionTest {

public static void main(String[] args) {

Person p = new Person();

try {

p.setName("Lincoln");

p.setAge(-1);

catch (IllegalAgeException    e) {

e.printStackTrace();

System.exit(-1);

}

System.out.println(p);

}

}


使用异常机制的建议

1.要避免使用异常处理代替错误处理,这样会降低程序的清晰性,并且效率低下。

2.处理异常不可以代替简单测试--- 只在异常情况下使用异常机制

3.不要进行小粒度的异常处理---应该将整个任务包装在一个Try语句块中

4. 异常往往在高层处理(先了解!后面做项目会说!)

如何利用百度解决异常问题

正常学习和开发中,我们经常会遇到各种异常。大家在遇到异常时,需要遵循下面三步来解决:

1.  细心查看异常信息,确定异常种类和相关JAVA代码行号

2.  拷贝异常信息到百度,查看相关帖子,寻找解决思路

3.  前两步无法搞定,再问同学或同事。

4.  前三步无法搞定,请示领导。

很多同学碰到异常一下就慌了,立刻开始请教别人搬救兵,殊不知这样做有两大坏处。

第一、太不尊重别人,把别人当苦力。

第二、失去提高的机会,自己解决一个异常,就意味这有能力解决一类异常。

解决一个异常能大大提高自身能力。



「全栈Java笔记」是一部能帮大家从零到一成长为全栈Java工程师系列笔记。笔者江湖人称 Mr. G,10年Java研发经验,曾在神州数码、航天院某所研发中心从事软件设计及研发工作,从小白逐渐做到工程师、高级工程师、架构师。精通Java平台软件开发,精通JAVAEE,熟悉各种流行开发框架。

笔记包含从浅入深的六大部分:

A-Java入门阶段

B-数据库从入门到精通

C-手刃移动前端和Web前端

D-J2EE从了解到实战

E-Java高级框架精解

F-Linux和Hadoop

时间: 2024-11-07 14:03:06

6.4-全栈Java笔记:异常处理办法(下)的相关文章

6.3-全栈Java笔记:异常处理方法(上)

异常的处理办法之一  捕获异常 图1 异常处理 上面过程详细解析: 1.try块: try语句指定了一段代码,该段代码就是一次捕获并处理的范围.在执行过程中,当任意一条语句产生异常时,就会跳过该段中后面的代码.代码中可能会产生并抛出一种或几种类型的异常对象,它后面的catch语句要分别对这些异常做相应的处理. 一个try语句必须带有至少一个catch语句块或一个finally语句块 . 注意事项 当异常处理的代码执行结束以后,是不会回到try语句去执行尚未执行的代码. 2.catch: 1)每个

6.2-全栈Java笔记:异常处理机制的分类

异常分类 JDK 中定义了很多异常类,这些类对应了各种各样可能出现的异常事件,所有异常对象都是派生于Throwable类的一个实例.如果内置的异常类不能够满足需要,还可以创建自己的异常类. 图1 异常的分类  Error Error类层次描述了Java运行时系统内部错误和资源耗尽错误.这类错误是我们无法控制的,同时也是非常罕见的错误.所以在编程中,不去处理这类错误. Error表明系统JVM已经处于不可恢复的崩溃状态中.我们不需要管他. 图2 java.lang包中Error的类 Error与E

6.1-全栈Java笔记:异常处理机制的概念

异常问题 实际工作中,遇到的情况不可能是非常完美的.比如:你写的某个模块,用户输入不一定符合你的要求.你的程序要打开某个文件,这个文件可能不存在或者文件格式不对,你要读取数据库的数据,数据可能是空的等.我们的程序再跑着,内存或硬盘可能满了等等. 软件程序在运行过程中,非常可能遇到刚刚提到的这些异常问题,我们叫异常,英文是:Exception,意思是例外.这些,例外情况,或者叫异常,怎么让我们写的程序做出合理的处理,安全的退出,而不至于程序崩溃. 如果我们要拷贝一个文件,在没有异常机制的情况下,我

10.2-全栈Java笔记:最全面的IO技术(二)

上节我们聊到「IO技术概念及入门」这节我们继续聊一下IO技术的分类. Java中流的概念细分 按流的方向分类: 输入流:数据流向是数据源到程序(InputStream.Reader结尾的流) 输出流:数据流向是程序到目的地(OutPutStream.Writer结尾的流) 按处理的数据单元: 字节流:按照字节读取数据(InputStream.OutputStream)命名上以stream结尾的流一般是字节流. 字符流:按照字符读取数据(Reader.Writer).命名上以Reader/Writ

10.1-全栈Java笔记:最全面的IO技术(一)

IO技术 对于任何程序设计语言而言,输入输出(Input/Output)系统都是非常核心的功能.程序运行需要数据,数据的获取往往需要跟外部系统进行通信,外部系统可能是文件.数据库.其他程序.网络.IO设备等等. 外部系统比较复杂多变,那么我们有必要通过某种手段进行抽象.屏蔽外部的差异,从而实现更加便捷的编程. 输入(Input)指的是:可以让程序从外部系统获得数据(核心含义是"读",读取外部数据).常见的应用: 1) 读取硬盘上的文件内容到程序.例如:播放器打开一个视频文件.word打

4.2-全栈Java笔记:对象和类的概念及定义

对象和类的概念 我们人认识世界,其实就是面向对象的.大家眼里都是一个个对象,要不怎么老说搞对象搞对象啊.比如现在让大家认识一下"天使"这个新事物,天使大家没见过吧,怎么样认识呢?最好的办法就是,给你们面前摆4个天使,带翅膀的美女,让大家看,看完以后,即使我不说,大家下一次是不是就都认识天使了. 但是,看完10个天使后,我们总要总结一下,什么样的东东才算天使?天使是无数的,总有没见过的!所以必须总结抽象,便于认识未知事物!总结的过程就是抽象的过程. 小时候,我们学自然数时怎么定义的?像1

11.6-全栈Java笔记:什么是线程同步

 同步问题的提出 现实生活中,我们会遇到"同一个资源,多个人都想使用". 比如:教室里,只有一台电脑,多个人都想使用.天然的解决办法就是,在电脑旁边,大家排队.前人使用完后,后人再使用. 线程同步的概念 处理多线程问题时,多个线程同时访问同一个对象,并且一个线程还想修改这个对象. 这时候,我们就需要用到"线程同步". 线程同步其实就是一种等待机制,多个线程需要同时访问同一个对象,则线程进入这个对象的等待池(wait pool)形成队列,等待前面的线程使用完毕后,下一

11.7-全栈Java笔记:如何实现线程同步

由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题.Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问时的冲突问题. 由于我们可以通过 private 关键字来保证数据对象只能被方法访问,所以我们只需针对方法提出一套机制,这套机制就是synchronized关键字,它包括两种用法:synchronized 方法和 synchronized 块:  synchronized方法 通过在方法声明中加入 synchronized

15.1-全栈Java笔记:Java事件模型是什么?事件控制的过程有哪几步??

应用前边两节上一章节的内容,大家可以完成一个简单的界面,但是没有任何的功能,界面完全是静态的,如果要实现具体功能的话,必须要学习事件模型. 事件模型简介及常见事件模型 对于采用了图形用户界面的程序来说,事件控制是非常重要的. 一个源(事件源)产生一个事件并把它(事件对象)送到一个或多个监听器那里,监听器只是简单地等待,直到它收到一个事件,一旦事件被接收,监听器将处理这些事件. 一个事件源必须注册监听器以便监听器可以接收关于一个特定事件的通知. 每种类型的事件都有其自己的注册方法,一般形式为: v