处理可能发生的异常

  1. 什么是异常?
    异常指的时程序在【编译】和【运行时】的一些不正常的状况。 Java的工程师其实早就想到可能会出现这些问题,他们把常见的问题写成类。 当我们出现这些异常时,可以根据API中去查找这些异常产生的原因。
    ArrayIndexOutOfBoundsException: 数组索引越界异常
    NullPointerException: 空指针异常

  2. 异常的体系结构?
    异常的根类Throwable,它下面有两个子类Error和Exception
    Throwable
    – Error: 非常严重的问题(错误,不需要解决)
    – Exception: 表示异常(可以解决)
    –Exception的直接子类:编译时异常,在编译时给出错误提示
    –RuntimeException的子类:运行时异常,在运行时打印在控制台(异常信息)

  3. 如何处理异常?
    3.1:不做任何处理,就是交给JVM处理
    特点:直接终止程序运行,把异常信息打印在控制台

    3.2:使用 try … catch 处理:
    特点:把可能出现异常的代码包裹起来,即使有异常产生,【代码还能继续执行】
    try{
    //有可能出现异常的代码
    }catch(异常类1 e1){
    //如果try有异常产生,就会被catch捕获到,就执行catch里面的代码
    }catch(异常类2 e2){

    }catch(Exception e3){
    //不管try里面有什么异常,这里都可以捕获
    }finally{
    //不管前面异常是否产生,finally里面的代码都回执行
    }

    3.3:使用 throws 声明异常:
    //在写一个方法时,方法中可能产生异常,需要使用throws声明。
    public static void show(String s) throws 异常类{
    //在方法中,可能由于调用者传递的参数不正确,导致代码出现异常。
    }

//处理可能发生的异常
public class Demo1 {public static void main(String[] args) {//需求:传入一个生日,得到年龄//2.try catchtry {show("2020/10-10");//两种方法,1.和方法一样将异常抛出给虚拟机,出现异常,虚拟机会打印异常信息}catch (ParseException e){e.printStackTrace();//打印全部[用的最多]//System.out.println(e.toString());//把异常对象转换为字符串[异常类类名+异常的解释]//System.out.println(e.getMessage());//仅仅是异常的解释}catch (Exception e){System.out.println("不管什么异常,都可以捕获");}finally {System.out.println("不管有没有异常,都可以执行");}System.out.println("over");}public static void show(String birthday) throws ParseException {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date parse = sdf.parse(birthday);//throws 异常申明,抛给使用者long time1 = parse.getTime();long time2 = System.currentTimeMillis();System.out.println("年龄为: "+(time2-time1)/1000/60/60/365);}
}打印结果:
--------------------------------------------------------------
java.text.ParseException: Unparseable date: "2020/10-10"at java.base/java.text.DateFormat.parse(DateFormat.java:395)at com.itheima.Demo1.show(Demo1.java:28)at com.itheima.Demo1.main(Demo1.java:13)
不管有没有异常,都可以执行
over

4.Throwable的方法 【异常对象为 上面第3点的 e】
Throwable类中提供了一些方法,所有的异常对象都能调用。
public String toString()
把异常对象转换为字符串,有 “异常常类名:异常的解释”
public String getMessage()
获取异常对象的解释(消息),就是异常信息”:"后面的一部分
public void void printStackTrace()
打印异常的所有信息,包含异常的类名+异常的解释(消息)+异常的位置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/330867.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何评价分类模型性能?(足球荔枝)

【1】评价分类模型,我们一般从两个点出发 1.通过指标来评估该模型是否适合对预测对象? 评价指标主要有:1)Precision;2)Recall;3)F-score;4)Accuracy;5)ROC;6)AUC[1] 2.通过计算预测…

区块链在阿里巴巴天猫中的应用

转载自 双11:区块链在阿里巴巴天猫中的应用 背景 天猫国际正在全面启动全球溯源计划——将利用区块链技术、药监码技术以及大数据跟踪进口商品全链路,汇集生产、运输、通关、报检、第三方检验等信息,给每个跨境进口商品打上“身份证”。这项…

这七种回归分析技术,学了不后悔

转自: http://dataunion.org/20514.html 什么是回归分析? 回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列…

单双列集合总述

Collection[单列集合]接口 有List 和 Set子接口 和Map接口[双列集合]并列 **1.**List接口 实现类:ArrayList 和 LinkedList ;特点:有序,可重复,有对索引的增删改查相对操作的方法 a.ArrayList:底层为数组 查询快[根据地址和索引查找],增删慢 b.LinkedList:底层为链…

Java正确获取客户端真实IP方法整理

转载自 干货:Java正确获取客户端真实IP方法整理在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP…

机器学习性能评估指标(综合性总结)

转自:http://charleshm.github.io/2016/03/Model-Performance/ 分类 混淆矩阵1 True Positive(真正, TP):将正类预测为正类数.True Negative(真负 , TN):将负类预测为负类数.False Positive(假正, FP):将负类预测为正类数 → 误报…

单列集合List的实现类

List接口 [Collection】的子类 1.ArrayList【查询快&#xff0c;增删慢】 &#xff08;1&#xff09;ArrayList常见方法【部分】 //list[Collection的子类,也是接口],ArrayList也是其实现类 public class Demo2 {public static void main(String[] args) {List<String>…

8张图带你轻松温习Java知识

转载自 8张图带你轻松温习Java知识 1 字符串不变性 下面这张图展示了这段代码做了什么 [code ]String s "abcd"; s s.concat("ef");[/code] 2 equals()方法、hashCode()方法的区别 HashCode被设计用来提高性能。equals()方法与hashCode()方法的区别在…

Linux的安装及管理程序

一、如何在linux安装卸载软件 1. 编译安装 灵活性较高 难度较大 可以安装较新的版本 2. rpm安装&#xff08;redhat&#xff09; linux 包安装 查软件信息&#xff1a;是否安装&#xff0c;文件列表 rpm 软件名 3. yum yum是RPM升级版本&#xff0c;解决rpm的弊端 安装软件 首…

机器学习评价指标大汇总

转自&#xff1a; http://www.zhaokv.com/2016/03/ml-metric.html 在使用机器学习算法的过程中&#xff0c;针对不同场景需要不同的评价指标&#xff0c;在这里对常用的指标进行一个简单的汇总。 &#xff08;分类和拟合的评价指标&#xff0c;正好应用到本人的论文中&#xff…

阿里Druid连接池监控的两个坑

转载自 注意&#xff1a;阿里Druid连接池监控的两个坑阿里的Druid大家都知道是最好的连接池&#xff0c;其强大的监控功能是我们追求的重要特性。但在实际情况中也有不少坑&#xff0c;说下最近遇到的一个坑吧&#xff01; 问题1&#xff1a;不断打印error级别的错误日志sessio…

List集合相关应用

1.定义一个Collection类型的集合&#xff0c;存储以下字符串&#xff1a; “JavaEE企业级开发指南”, “Oracle高级编程”, “MySQL从入门到精通”, “Java基础教程” 完成以下功能 1.删除书名字符小于10个的元素&#xff0c;并打印 2.打印书名中包含“Java”的元素 public cl…

消息中间件ActiveMQ、RabbitMQ、RocketMQ、ZeroMQ、Kafka如何选型

转载自 消息中间件ActiveMQ、RabbitMQ、RocketMQ、ZeroMQ、Kafka如何选型&#xff1f; 最近要为公司的消息队列中间件进行选型&#xff0c;市面上相关的开源技术又非常多&#xff0c;如ActiveMQ、RabbitMQ、ZeroMQ、Kafka&#xff0c;还有阿里巴巴的RocketMQ等。 这么多技术&am…

机器学习(周志华)- 第2章模型评估与选择笔记

转自&#xff1a; https://samanthachen.github.io/2016/08/03/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0_%E5%91%A8%E5%BF%97%E5%8D%8E_%E7%AC%94%E8%AE%B02/ 经验误差与过拟合 错误率&#xff1a; 分类错误样本数占样本总数 精度&#xff1a; 1 - 错误率 误差&#xff1a;学习器…

单列集合Set的实现类TreeSet

Set接口 [Collection】的子类 TreeSet a.特点【无序&#xff0c;不可重复&#xff0c;查询快&#xff0c;可自动排序】&#xff0c;但需要指定排序规则&#xff0c;API中有一些类已经实现了Comparable接口],给出了默认排序规则&#xff0c;如:Integer:数值大小[升序] String:…

关于Java你不知道的10件事

转载自 关于Java你不知道的10件事 作为 Java 书呆子&#xff0c;比起实用技能&#xff0c;我们会对介绍 Java 和 JVM 的概念细节更感兴趣。因此我想推荐 Lukas Eder 在 jooq.org 发表的原创作品给大家。 你是从很早开始就一直使用 Java 吗&#xff1f;那你还记得它的过去吗&…

模型评估与选择 ( Bias(偏差),Error(误差),和Variance(方差) )

转自&#xff1a; https://github.com/familyld/Machine_Learning/blob/master/02model_evaluation_and_model_selection.md 机器学习中的Bias(偏差)&#xff0c;Error(误差)&#xff0c;和Variance(方差)有什么区别和联系&#xff1f; 参见 https://www.zhihu.com/question…

单列集合Set的实现类HashSet

Set接口 [Collection】的子类 HashSet 特点【无序&#xff0c;不可重复,不能排序】 默认比较地址值【地址相同的值相同】&#xff0c;重写后可比较内容【内容相同的值相同】 1.比较地址值【默认】 public class Demo1 {public static void main(String[] args) {HashSet<…

双列集合Map的实现类

Map接口【和Collection接口并列】 Map接口 成员方法【实现于Map接口&#xff0c;TreeMap也可实现&#xff0c;这里以HashMap为例】 //HashMap实现类 :无序[HashSet底存原理] 哈希表 public class Demo1 {public static void main(String[] args) {HashMap<String, Intege…

机器学习指标大汇总

转自&#xff1a; http://www.36dsj.com/archives/42271 作者&#xff1a;无影随想 在使用机器学习算法的过程中&#xff0c;针对不同场景需要不同的评价指标&#xff0c;在这里对常用的指标进行一个简单的汇总。 一、分类 1. 精确率与召回率 精确率与召回率多用于二分类问题。…