java异常复习
如果有时学东西概念太多了,可以反着学,从结果到过程,从代码到概念,也许就不会那么枯燥了,比如学反射的时候。
java异常复习
异常和错误的区别?
异常:程序或环境本身出现错误。(程序员可以捕获并处理)
错误:内部系统错误。(程序员不用做什么,程序员通知用户关掉它即可。)
类Scanner、nextInt用法及其含义:
import java.util.Scanner;
public class TestException2{
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
//
int a,b;
try{
System.out.println("输入被除数:");
a=input.nextInt();
System.out.println("输入除数:");
b=input.nextInt(); System.out.println("两数相除结果为:"+a/b);
}catch(InputMismatchException e){
System.out.println("你输入的不是数字,这里必须是数字。");
}
} }
/*
类Scanner:一个可以使用正则表达是来解析基本类型
和字符串的简单文本扫描器。
如:用户能够从System.in中读取一个数:
Scanner sc=new Scanner(System.in);
int i=sc.nextInt();
//nextInt():类java.util.Random中的方法,返回下一个伪随机数(这里的随机是相对的)
随机数生成器中的一个均匀分布的一个int值
下面是从一个字符串读取若干项的例子:
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
s.close();
输出为:
1
2
red
blue
是如何实现跳读的?
*/
异常语法格式总结:
try{
//程序需要执行的代码,可能有错
}catch(异常类 变量名){
//若出现异常类,要执行的代码块
}
//异常类自定义或继承Exception类或子类定义的,
异常对象一是运行时环境自动抛出的,比如除数不能为零,二是用户自定义的。
finally:任何情况下必须执行的代码,finally唯一不被执行的情况是存在System.exit()终止了JVM的运行。
import Java.util.InputMismatchException;
import Java.util.Scanner; public class TestException{
public static void main(String[] args){
Scanner input=new Scanner(System.in); int a,b; try{
System.out.println("输入被除数:");
a=input.nextInt();
System.out.println("输入除数:");
b=input.nextInt();
System.out.println("两数相除结果为:"+a/b);
}
catch (InputMismatchException e) {
System.out.println("你输入的不是数字,这里必须是数字!");
}catch(ArithmeticException e){
System.out.println("你输入的数字除数为0");
Sytem.out.println(e.getMessage());
}catch (Exception e) {
System.out.println("程序出错了!")
}finally{
System.out.println("无论异常与否,都会执行这里!");
}
}
}
4.throws
有些异常用户不想处理时,用户可能没办法处理或者不想处理,则可以把方法头加上throws语句来放弃本方法处理。
import Java.util.InputMismatchException;
import Java.util.Scanner; public class TestException{
public static void main(String[] args) throws InputMismatchException,
ArithmeticException,Exception{
Scanner input=new Scanner(System.int);
int a,b; System.out.println("输入被除数:");
a=input.nextInt();
System.out.println("输入除数:");
b=input.nextInt();
Sysem.out.println("两数相除的结果是:"+a/b); }
}
如果JVM追溯到调用栈最底部main方法时,仍没有找到异常代码块,则
1)调用异常对象printStackTrace()方法,打印方法调用栈的异常信息。
2)如果出现异常线程为主线程,则程序运行终止;若非主线程,则终止,让其他线程继续。
说明:用throws是一种消极的异常用法,所以不提倡,且耗资源和时间多。
(增加了JVM的运行时间)
5.自定义异常:类java.lang.Throwable是所有类的基类,它包括两个子类:Exception和Error。Exception是
描述程序捕获的异常,如ClassNotFoundException。Error类用于指示合理应用程序但是由于
JVM出现的错误,比如虚拟机错误VirtualMachineError。(错误不允许程序员捕获)
自定义异常可以继承Throwable类或Exception,而不要继承Error类。且自定义异常间可以有继承。
public要为自定义异常设计工作函数,为方便构造自定义异常对象。
public class MyException extends exception{
public MyException(){
super();
}
public MyException(String msg){
super(msg);
}
}
上面这种MyException类才叫异常类,异常类通过throw关键字来手动抛出异常。
手动抛出异常语法格式:
throw new 异常类();
如:
public void setAge(int age) throws MyException{
if(age<0 || age>100){
throw new MyException(“年龄不符合要求”);
}else{
this.age=age;
}
}
…
//测试类中
try{
t1.setAge(1000);
}catch(MyException e){
e.printStackTrace();
}
或者
在测试类中用throws来继承MyException,交给JVM来处理
即public static void main(String[] args)throws MyException{…}
java异常复习的更多相关文章
- Java异常之自定义异常
哎呀,妈呀,又出异常了!俗话说:"代码虐我千百遍,我待代码如初恋". 小Alan最近一直在忙着工作,已经很久没有写写东西来加深自己的理解了,今天来跟大家聊聊Java异常.Java异 ...
- Java基础复习笔记系列 八 多线程编程
Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...
- Java异常的10个关键知识点
前言 总结了Java异常十个关键知识点,面试或者工作中都有用哦,加油. 一. 异常是什么 异常是指阻止当前方法或作用域继续执行的问题.比如你读取的文件不存在,数组越界,进行除法时,除数为0等都会导致异 ...
- 《Java基础复习》—常识与入门
突然发现自己Java基础的底子不到位,复习! 所记知识会发布在CSDN与博客网站jirath.cn <Java基础复习>-常识与入门 一.Java语言的知识体系图 分为三部分 编程语言核心 ...
- java基础复习记录
java基础复习记录(数组.对象.异常) 数组 数组的定义 数组是相同类型数据的有序集合.如:篮球队就是一个数组,队员球服上有号码,相当于索引.通过某一个的某一个号码来确认是某一个队员.数组中索引从0 ...
- 浅谈java异常[Exception]
学习Java的同学注意了!!! 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:589809992 我们一起学Java! 一. 异常的定义 在<java编程思想 ...
- 基础知识《十》java 异常捕捉 ( try catch finally ) 你真的掌握了吗?
本文转载自 java 异常捕捉 ( try catch finally ) 你真的掌握了吗? 前言:java 中的异常处理机制你真的理解了吗?掌握了吗?catch 体里遇到 return 是怎么处理 ...
- Java异常体系及分类
上图是基本的java异常体系结构. 主要分为2大类:Error和Exception 1.Error:描述了Java运行系统中的内部错误以及资源耗尽的情形.应用程序不应该抛出这种类型的对象,一般是由虚拟 ...
- 第11章 Java异常与异常处理
1.Java异常简介 1.什么是异常异常出现的时候代码会无法正常运行下去,会产生各种问题2.捕捉异常的作用提早发现异常,方便查找问题,并给出解决方法3.Java中的异常1.Java中所有不正常的类都是 ...
随机推荐
- Quartz学习——SSMM(Spring+SpringMVC+Mybatis+Mysql)和Quartz集成详解(转)
通过前面的学习,你可能大致了解了Quartz,本篇博文为你打开学习SSMM+Quartz的旅程!欢迎上车,开始美好的旅程! 本篇是在SSM框架基础上进行的. 参考文章: 1.Quartz学习——Qua ...
- 微信 获取wx.config 参数 基类
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- php无限极分类递归与普通
1. 递归 public function getInfo(){$data=$this->select();$arr=$this->noLimit($data,$f_id=0,$level ...
- 《into100-创客+沙龙第4期:互联网产品用户需求挖掘与转化》圆满成功
5月16日,由麦思博和阿里云联合主办的<into100-创客+沙龙第4期:互联网产品用户需求挖掘与转化>圆满结束.现场100多位来自互联网及软件公司的产品经理.产品总监.开发经理.工程师及 ...
- 51nod 1432 - 独木舟 - [贪心]
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1432 基准时间限制:1 秒 空间限制:131072 KB ...
- CodeForces - 950C Zebras 模拟变脑洞的天秀代码
题意:给你一个01串,问其是否能拆成若干形如0101010的子串,若能,输出所有子串的0,1 的位置. 题解:一开是暴力,然后瞎找规律, 最后找到一种神奇的线性构造法:扫一遍字符串,若为0就一直竖着往 ...
- 数据恢复:如何恢复Linux中意外删除的Oracle和MySQL数据库
今天有客户的数据库意外被删除了整个目录中的数据文件,操作系统级别的删除,然而幸运的是这个数据库没有崩溃,仍然处于 open 状态的时候,客户就发现了问题,求助到我们,最终完整地恢复了所有数据文件. 在 ...
- Crontab '2>&1 &' 含义
Crontab '2>&1 &' 含义 - dosttyy - 博客园 https://www.cnblogs.com/dosttyy/p/4810026.html
- Spark-Cache与Checkpoint
一.Cache缓存操作 scala> val rdd1 = sc.textFile("hdfs://192.168.146.111:9000/logs") rdd1: org ...
- 用Monitor简单3步监控中间件ActiveMQ
Apache ActiveMQ是一个基于JMX规范的纯Java消息中间件,它为应用系统提供高效.灵活的消息同步与异步传输处理.存储转发.可靠传输的特性. 消息队列对于应用的健康运行非常重要,作为运维人 ...