java 匿名 异常_JAVA类(内部类、匿名内部类、异常、自定义异常)
内部类
package AA;public class类 {int de=123;
StringBuffer dee=newStringBuffer();public class成员内部类{public voidff() {
System.out.println("这是成员内部类方法");
}
}/*1.可以访问外部类所有的成员,包括被声明为私有(private)的;
2.可以使用任何访问权限修饰符,包括protected和private;*/
public voidff1() {int de1=12;class局部内部类{public voidff() {
System.out.println("局部内部类方法");
System.out.println(de);
}
}new局部内部类().ff();
}/*1.不允许使用任何访问权限修饰符;
2.创建局部内部类的对象的语法,必须在声明局部内部类之后;调用只能在该方法里
3.可以访问外部类所有的成员,包括被声明为私有(private)的;*/
private static class静态内部类{public voidff() {
System.out.println("这是静态内部类方法");
}
}/*1.只能访问static成员
2.可以使用任何访问权限修饰符,包括protected和private;
3.可以在其它类中直接创建静态内部类的对象,语法格式为:*/
public voiddy() {new 成员内部类().ff();//调用成员内部类方法
//调用方法二: 类.成员内部类 de=new 类.成员内部类();
new 类().ff1();//调用局部内部类方法
new 静态内部类().ff();//调用静态内部类方法
//调用方法二:类.静态内部类 de=new 静态内部类();
}public static voidmain(String[] args) {new类().dy();
}
}
参考:
匿名内部类
参考:
抽象类
异常
先来点基础的:
public classxin {public static voidmain(String[] args) {try{
System.out.println("hhhhh");int de[]=new int[10];
de[10]=12;
}catch(ArrayIndexOutOfBoundsException fr){
System.out.println("chucuo");
}
}
}
上面代码解释了:一个基本异常的基本格式,try{ } ......catch(){ }
try。。。catch:不需要抛出异常
自定义异常:
package AA;
import java.util.Scanner;class de1 extends Exception{//首先类要继承Exception(就是异常类)
publicde1(String fr) {
super(fr);
}
}public classde{public static int fg(int a,int b) throws de1{//声明方法并且抛出异常(throws de1)
Scanner de1=new Scanner(System.in);
System.out.println("请输入数值1");
a=de1.nextInt();
System.out.println("请输入数值2");
b=de1.nextInt();if(a<0||b<0) {throw new de1("负数错误");//抛出异常
}if(a>100||b>100) {throw new de1("数大于100错误");
}return a+b;
}public static voiddayin() {
System.out.println("异常啦");
}public static voidmain(String[] args) {try{
fg(3123,3123); //调用上面的方法,下面并且打印出结果,打印方法是打印方法的返回值//这里的数字没多大用处,主要是不出错//根据上面的方法给出的变量所以这里必须要加//但是上面有输入流,就直接将这个覆盖了
System.out.println(fg(3123,3123));
}catch(de1 e) {//这个是try后面必须接的//括号里面的是异常类型,e是结果
dayin();
System.out.println(e);
}
}
}//1,程序通过try走,并且执行fg方法//2,当用户输入数值时,会进行判断,如果不符合就会抛出异常(这里是抛在de1类里面,关键字:throw new 类名)//3,try执行已经异常了,所以将会执行catch,而catch可以有多个,那个catch则会判断try异常属于哪一类型的异常//4,判断完后,将会执行catch里面的语句,用来提示用户//4的注意:上面的判断下面什么(负数错误)(da数错误),其实是de1类的构造string方法,可以去掉,直接在catch里面加提语句都一样//列如下面:去掉构造,在catch里面加已是语句
package AA;
import java.util.Scanner;classde1 extends Exception{
}public classde{static int fg(int a,int b) throws de1{//声明抛出异常(throws de1)
Scanner de1=new Scanner(System.in);
System.out.println("请输入数值1");
a=de1.nextInt();
System.out.println("请输入数值2");
b=de1.nextInt();if(a<0||b<0) {throw new de1();//抛出异常,说白了就是
}if(a>100||b>100) {throw newde1();
}return a+b;
}static voiddayin() {
System.out.println("异常啦");
}public static voidmain(String[] args) {try{
fg(3123,3123); //调用上面的方法,下面并且打印出结果,打印方法是打印方法的返回值//这里的数字没多大用处,主要是不出错//根据上面的方法给出的变量所以这里必须要加//但是上面有输入流,就直接将这个覆盖了
System.out.println(fg(3123,3123));
}catch(de1 e) {//这个是try后面必须接的//括号里面的是异常类型,e是结果
dayin();
System.out.println("有错误哟!");
System.out.println(e);
}
}
}
结论:
1,首先一个自定义异常的要有一个拋回来的异常类,这个类用于其它类执行的方法时抛出来的异常,就抛在这个类里面
注意:这个类必须是继承Exception(推荐)和RuntimeException
2,然后就可以在‘其他类’里面随意加方法了,
注意:需要抛出异常就必须在方法名后面加throws 类名,格式:方法名 throws 类名(被抛异常类)
3,声明好方法后,就可以了
注意:这里番外哈,1,如果里面有if判断语句,可以在判断下方在加个'异常抛出',格式:throw new 类名(被抛异常类)
2,注意:throw:是放在方法体里面的
throws:是放在方法体上面的(就是方法名上面)
4,接下来就是用try.....catch了。try里面放异常的方法(说白了就是在try里面执行方法体)
catch就是异常类型了,自定义异常,那‘异常类型’肯定就是‘被抛异常类名’
catch语句格式:catch(类名 返回值(结果)),结果随意
这个语句一般放在开始执行程序是调用方法那里
下面再举一个例子:判断输出输入的值是否是负数
package hhh;public classhh extends Exception{static inta,c;static int b=211;public static void de(inta1) throws hh{if(a1<0){throw newhh();
}
a=b*a1*21;
System.out.println("输出:"+a);
}public static voidmain(String []args){try{
de(-6);
}catch(hh re){
System.out.println("负数无效");
}
}
}
执行结果:抛出异常,执行catch语句
例子二
package AA;
import java.util.InputMismatchException;
import java.util.Scanner;public class异常 extends Exception{
Scanner de=new Scanner(System.in);public voidks()throws 异常 {try{for(;;) {
System.out.println("请输入数字");int dee=de.nextInt();if(dee<0)throw new异常();
System.out.println("正确");
}
}catch(异常 e) {
System.out.println("对不起你输入的有误!!");new异常().ks();
}catch(InputMismatchException ee) {
System.out.println("数字过大或者非数字");new异常().ks();
}
}public static voidmain(String[] args) throws 异常 {new异常().ks();
}
}/*编写程序:判断用户输入的是否为负数,否则异常*/
执行结果:
(内部类、匿名类、匿名内部类、抽象类、异常、终态)
java 匿名 异常_JAVA类(内部类、匿名内部类、异常、自定义异常)相关推荐
- Java篇第七回——内部类与异常类
一.内部类 我们在谈到某一个场所,比如说剧场时,我们更加关注这个剧场中有哪些角儿,我们在提到剧场时也经常会把角儿们顺带脚提出来.在Java中也有这种逻辑,我们希望在声明一个剧场类时,这个剧场就已经有了 ...
- JAVA语言异常_Java语言中常用异常类EoFException是用来处理( )异常的类_学小易找答案...
[填空题]Java语言中常用异常类ClassNotFoundException是用来处理 ( )的异常的类 [填空题]Java语言声明 ( ) 类为会产生"严重错误"的类 [简答题 ...
- java exception用法_Java基础回顾_Exception异常使用详解
package 内部类异常包装器; public class 异常 { /** * 1.异常: * 有Error和Exception两个基本子类 * 2.Error: * Error表示恢复不是不可能 ...
- java throw异常_java throw拋出异常详解
之前给大家介绍了java throws声明异常,那么和throws不一样的是throw语句用来直接拋出一个异常,后接一个可拋出的异常类对象,下面的话一起来详细的了解一下throw拋出异常吧. 下面是语 ...
- java 如何忽略异常_java中如何解决异常
原文 | dzone.com/articles/9-- 作者 | Thorben Janssen 翻译 | geekymv 无论你是初学者还是经验丰富的开发人员,对于你和你的团队来说,提高异常处理的能 ...
- java 数字运算异常_Java基础之:异常及异常处理
Java基础之:异常及异常处理 我们将java程序执行过程中出现的不正常现象称为异常,例如:之前遇到的数组下标越界异常,空指针异常等等 执行过程中发生的异常事件分为两类: Error(错误):Java ...
- java栈空异常_Java如何处理空堆栈异常?
在Java编程中,如何处理空堆栈异常? 本例展示了如何使用Date类的System.currentTimeMillis()方法和Stack类的s.empty(),s.pop()方法来处理空堆栈异常. ...
- java匿名启动线程_使用匿名内部类:来创建线程的两种方式
[Java]基础31:创建线程的两种方式 谢谢你的观看. 今天是我自学Java的第31天. 你的观看便是对我最大的鼓励. 话不多说,开始今天的学习: 线程的创建有两种方式,昨天学习过其中的一种: 创建 ...
- java 匿名类型_Java之匿名类讲解
匿名类,正如名字一样在java中没有名字标识的类,当然了编译后还是会安排一个名字的. 下面是一个关于匿名类的简单例子: public classClient {public static voidma ...
最新文章
- mysql的crud语句_MySQL数据库CRUD语句快速入门
- 【Node.js】2.开发Node.js选择哪个IDE 开发工具呢
- 深度学习正改变物理系统模拟,速度最高提升20亿倍那种
- .NET Compact Framework 2.0 SP2 for Platform Builder (4.2, 5.0, 6.0)
- asp.net中实现文件批量上传
- flume高可用-failover-配置文件编写
- LintCode-A + B 问题
- Spring的AOP-AspectJ注解方式
- python语言的单行注释以井号开头_python-注释
- Emacs基本操作说明
- Atitit. Dwr 抛出异常error解决方案
- 浏览器饿了么cookie提取
- Sql Server Report Builder 计算标准偏差
- 【财经期刊FM-Radio|2021年03月09日】
- linux权限管理详解
- 计算机二级怎么复习,全国计算机等级考试应该如何备考
- 计算方法实验(五):高斯列主元消去法
- 基于JAVA教学质量评价系统_java毕业设计_springboot框架的教学质量评价系统
- Stackoverflow使用
- Redis性能优化方案总结