Java捕获异常的问题
---恢复内容开始---
在Java编译过程中,有时候会出现输入未按照规定输入的情况,此时需要警告用户输入错误,这就会是程序运行过程中出现异常。异常就是可预测但是又没办法消除的一种错误。所以在编写过程中,为了在程序当中不发生这样的错误,就会将容易发生异常的代码用try catch进行处理,或者通过throws将异常向上抛出,由上一级进行接收并处理。
如果发生异常而不去处理,会导致程序中断,也就是程序无法继续运行。
下面来详细的说一下有关异常的一些问题。
一、异常的产生
异常是程序之中导致程序中断的一种指令流,异常一旦出现并且没有进行合理处理的话,那么程序就将中断执行。
例如:
在编写的时候,比如说你想把一个字符串型转换成int型的,如果这样是没问题的。
String s = "1";
int i;
i = Integer.parseInt(s);
这样是不会出现错误的,但是如果你这样写,就会出现错误。
String s = "a";
int i;
i = Integer.parseInt(s);
在编译过程中,编译器不会给你这方面的提示。在开始的时候我已经说过,异常的出现是程序运行到此处的时候才产生的。所以,在编写的时候并不会给你提醒错误,而是在运行的时候才会出现。

二、异常的类型
一般来说,异常分为可检测异常和非检测异常。
1、可检测异常
可检测异常经编译器验证,对于声明抛出异常的任何方法,编译器将强制执行处理或声明规则。
2、非检测异常
非检测性异常就是当你运行的时候才会有问题。换句话说就是运行时异常和编译时异常。比如我上面所说的类型的强制转换,在运行过程中,会是程序在运行到此处时中止。
三、出现异常的解决方法
在Java中,对于异常有很多的分类,要想做一个合格的程序员,就必须了解这些异常,并学会解决他们的方法。
常见的异常有:
算术异常类:ArithmeticExecption
空指针异常类:NullPointerException
类型强制转换异常:ClassCastException
数组负下标异常:NegativeArrayException
数组下标越界异常:ArrayIndexOutOfBoundsException
违背安全原则异常:SecturityException
文件已结束异常:EOFException
文件未找到异常:FileNotFoundException
字符串转换为数字异常:NumberFormatException
操作数据库异常:SQLException
输入输出异常:IOException
在这里就举这些例子,具体请参考 https://www.cnblogs.com/cvst/p/5822373.html
四、有关自定义异常
自定义异常就是Java本身不包含的异常类型,需要程序员在编写的时候自己去定义。
例如,在写计算三角形面积时,我们需要判断输入的三角形的三个边是否能构成三角形,但是,在实际操作过程中,不能构成三角形的三边仍然能计算出面积,这就是出现异常的一个类型。当然,在处理这个问题的时候我们可以调用Java本身包含的异常进行处理,但是,我们也可以自定义一个异常来进行抛出。
如:

这是我上面提到的有异常但是不提醒的情况。我们可以根据自定义异常来解决这个问题。
自定义异常:

异常抛出:

运行结果:

自定义异常一般这样来定义
class 自定义异常类 extends 异常类型(Exception){
// 因为父类已经把异常信息的操作都完成了,所在子类只要在构造时,将异常信息传递给父类通过super 语句即可。
// 重写 有参 和 无参 构造方法
}
例如我上面所提到的方法。具体内容给大家推荐一个网址 https://blog.csdn.net/qq_18505715/article/details/73196421 又前面大佬的总结,在这里我就不再重复了。
Java捕获异常的问题的更多相关文章
- TJI读书笔记16-异常处理
TJI读书笔记16-异常处理 概念 基本异常情形 异常的捕获 自定义异常 异常说明 捕获所有异常 栈轨迹 重新抛出异常 Java标准异常 使用finally 异常的限制 构造器 异常的匹配 其他乱七八 ...
- jsp标准标签库
抄袭自:http://www.cnblogs.com/hongten/archive/2011/05/14/2046005.html JSP标准标签库 Pass by xkk ,and aut ...
- pl/sql的介绍
为什么需要pl/sql编程? 因为使用纯的sql语句来操作数据库,有先天性的技术缺陷: 1.不能模块编程: 2.执行速度慢: 3.安全性有问题: 4.浪费带宽. pl/sql是什么? pl/sql(p ...
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- Java多线程之捕获异常
1.主线程不能捕获到子线程的异常 package Thread.Exection; import java.util.concurrent.ExecutorService; import java.u ...
- java 线程 捕获异常
java 线程 捕获异常 来自:thinking in java 4 文件夹20.2.13 package org.rui.thread.concurrent; import java.util.c ...
- Java中的异常处理:何时抛出异常,何时捕获异常,何时处理异常?
Java中的异常处理:何时抛出异常,何时捕获异常? 2017-06-07 1 异常分类 Throwable对象可以分为两组: 一组是unchecked异常,异常处理机制往往不用于这组异常,包括: Er ...
- java异常——捕获异常+再次抛出异常与异常链
[0]README 0.1) 本文描述+源代码均 转自 core java volume 1, 旨在理解 java异常--捕获异常+再次抛出异常与异常链 的相关知识: [1]捕获异常相关 1.1)如果 ...
- Java修炼——异常的概念以及处理方式(捕获异常)
异常概念分类 异常( Exception 也称例外)就是在程序的运行过程中 所发生的不正常的事件,它会中断正在运行的程序 所需文件找不到 网络连接不通或中断 算术运算错 (被零除-) ...
随机推荐
- oracle 之 CLUSTER_INTERCONNECTS is not set to the recommended value
问题:Database parameter CLUSTER_INTERCONNECTS is not set to the recommended value 在Oracle实际应用程序集群环境中可以 ...
- react-router v4.0 知识点
react-router 提供了一个withRouter组件 withRouter可以包装任何自定义组件,将react-router 的 history,location,match 三个对象传入. ...
- pandas读取MySql/SqlServer数据 (转)
在 Anacondas环境中,conda install pymssql ,一直报包冲突,所以采用先在 https://www.lfd.uci.edu/~gohlke/pythonlibs/#nump ...
- java 多线程详解
一.重点 重点: 1.创建和启动线程 2.实现线程调度 3.实现线程同步 4.实现线程通信 1.为什么要学习多线程? 当多个人访问电脑上同一资源的时候,要用到多线程,让每个人感觉很多电脑同时为多个人服 ...
- Linux vi文本编辑器
vi文本编辑器 1.最基本用法 vi somefile.4 1/ 首先会进入“一般模式”,此模式只接受各种命令快捷键,不能编辑文件内容 2/ 按i键,就会从一般模式进入编辑模式,此模式下,敲入的都是 ...
- ML: 聚类算法-K均值聚类
基于划分方法聚类算法R包: K-均值聚类(K-means) stats::kmeans().fpc::kmeansruns() K-中心点聚类(K-Medoids) ...
- 关于IP核中中断信号的使用---以zynq系统为例
关于IP核中中断信号的使用---以zynq系统为例 1.使能设备的中断输出信号 2.使能处理器的中断接收信号 3.连接IP核到处理器之间的中断 此处只是硬件的搭建,软件系统的编写需要进一步研究. 搭建 ...
- excel技巧--复制带excel侧边的表格
假设要复制出带excel侧边的表格内容,则使用以下步骤: 1.选择要复制的表格: 2.选择“页面布局”->“标题”选项的“打印”打勾: 3.选择“开始”->复制旁的三角选项:复制为图片: ...
- ELK Stack 笔记
ELK Stack ELK Stack ELK Stack ELK 介绍 架构 Elasticsearch 安装 常见问题 关闭 Elasticsearch Elasticsearch-head Ki ...
- 【HTTP】使用 RestTemplete 实现 post请求
如上图,要求: post请求; x-www-form-urlencoded 类型; 如下代码没有进行整理,但是测试OK package com.chinamobile.epic.http; impor ...