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();

}

}/*编写程序:判断用户输入的是否为负数,否则异常*/

执行结果:

c68013b74a95de91763a298ebee88a5c.png

(内部类、匿名类、匿名内部类、抽象类、异常、终态)

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

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

相关文章

ASP.NET 多环境下配置文件web.config的灵活配置---转

注意&#xff1a;本功能在.Net Core中已经不可用&#xff0c;暂时需手动修改web.config中的信息&#xff0c;或者将其设置在appsettings.XXX.json中&#xff0c;然后再使用web.config中的环境变量来制定使用的具体appsettings文件。 转自&#xff1a;https://www.cnblogs.com/h…

Uranium UI Kit

Uranium UI Kit控件名&#xff1a;Uranium UI Ki作者&#xff1a;enisn原文链接&#xff1a; https://github.com/enisn/UraniumUI项目使用 Apache-2.0 开源许可协议。Uranium 是用于 .NET MAUI 的免费和开源 UI 工具包。它提供了一组控件和实用程序来构建现代应用程序。它建…

《Java多线程编程核心技术》读后感(十五)

线程的状态 线程对象在不同的运行时期有不同的状态&#xff0c;状态信息就存在与State枚举类中。 验证New,Runnable&#xff0c;Terminated new:线程实例化后还从未执行start()方法时的状态 runnable&#xff1a;线程进入运行的状态 terminated&#xff1a;线程被销毁时的状态 …

队列(queue)

队列(queue)和栈一样支持push和pop两个操作。但与栈不同的是,pop两个操作。但与栈的不同的是&#xff0c;pop完成的不是取出最顶端的元素&#xff0c;而是最底端的元素。也就是说最初放入的元素能够最先被取出&#xff08;这种行为被叫做FIFO:First In First Out&#xff0c;即…

一题多解,ASP.NET Core应用启动初始化的N种方案[上篇]

ASP.NET Core应用本质上就是一个由中间件构成的管道&#xff0c;承载系统将应用承载于一个托管进程中运行起来&#xff0c;其核心任务就是将这个管道构建起来。在ASP.NET Core的发展历史上先后出现了三种应用承载的编程方式&#xff0c;而且后一种编程模式都提供了针对之前编程…

WPF 简单模仿 VSCode 界面布局

WPF 简单模仿 VSCode 界面布局本文经原作者授权以原创方式二次分享&#xff0c;欢迎转载、分享。WPF 简单模仿 VSCode 界面布局作者&#xff1a;弈虎-吕女士会翻墙原文链接&#xff1a; https://github.com/Chen-Lin-Zhao-Wei/WPFLikeVSCode分享一篇群友这几天自己写的 WPF 简…

compare()方法+使用compare方法

compare()方法 compare(lob1,lob2,amount,offset_1,offset_2) 1用于比较2个lob存储的数据&#xff0c;比较的方式是从指定偏移量开始&#xff0c;对指定数量的字符或者字节进行比较。 2如果比较内容相同&#xff0c;返回0&#xff0c;否则返回-1或1. 3如果参数设置有误或不合…

linux 下 mysql默认表_linux环境下mysql默认是区分表名大小写的

在linux环境下&#xff0c;mysql默认表明是区分大小写的&#xff0c;我们可以查看全局变量发现:mysql> show variables like lower%;-------------------------------| Variable_name | Value |-------------------------------| lower_case_file_system | OFF || lower_cas…

两将军问题和TCP三次握手

两将军问题&#xff0c;又被称为两将军悖论、两军问题&#xff0c; 是一个经典的计算机思想实验。首先&#xff0c; 为避免混淆&#xff0c;我们需要认识到两将军问题虽然与拜占庭将军问题相关&#xff0c;但两者不是一个东西。拜占庭将军问题是一个更通用的两将军问题版本&…

微信小程序开发系列五:微信小程序中如何响应用户输入事件

2019独角兽企业重金招聘Python工程师标准>>> 微信小程序开发系列教程 微信小程序开发系列一&#xff1a;微信小程序的申请和开发环境的搭建 微信小程序开发系列二&#xff1a;微信小程序的视图设计 微信小程序开发系列三&#xff1a;微信小程序的调试方法 微信小程序…

理解Object.defineProperty的作用

Object.defineProperty 是vue中双向绑定的基础。vue是通过数据劫持的方式来做数据绑定的&#xff0c;最核心的方法是通过 Object.defineProperty()方法来实现对属性的劫持&#xff0c;达到能监听到数据的变动。要实现数据的双向绑定&#xff0c; 当使用存取器描述属性的特性的时…

直播修仙:使用.NET 的 WebView2 如何获取请求的响应内容,以微信直播的互动直播为例...

背景近几年直播行业快速发展&#xff0c;门槛也越来越低&#xff0c;越来越的人涌入直播大军。不得不说&#xff0c;直播不仅带来了更多的娱乐消遣&#xff0c;还提供了一个新型的就业方式。说起直播的类型&#xff0c;有一个非常小众的娱乐直播&#xff0c;没有主播&#xff0…

web第6次作业position

position 属性指定了元素的定位类型。 position 属性的五个值&#xff1a; static &#xff08;静态定位&#xff09; HTML元素的默认值&#xff0c;即没有定位&#xff0c;元素出现在正常的流中。 静态定位的元素不会受到 top, bottom, left, right影响。 div.stati…

GeneralUpdate版本更新公告20221009

大家好我是juster&#xff0c;GeneralUpdate的开源项目作者。这次将发布GeneralUpdate兼容.NET MAUI和多平台为核心的版本。经过国庆假期的打磨修复了大量开源社区开发者的提交的bug和不合理修改建议&#xff0c;重构、删除了大量代码和结构使用和上一个版本没有太大变化。1.更…

实验2 java_《Java程序设计》实验2

1、使用java语言编程&#xff0c;从键盘输入N个整数存储到数组中&#xff0c;求数组所有元素的和、最大值和平均值。import java.util.Scanner;public class Program01{public static void main(String [] args){Scanner scanner new Scanner(System.in);System.out.println(&…

WPF遍历当前容器中某种控件的方法

原文:WPF遍历当前容器中某种控件的方法版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/m0_37591671/article/details/79528845 WPF遍历当前容器中某种控件的方法 WPF遍历当前容器中某种控件的方法1.目的&#xff1a;2.实现思…

善用Object.defineProperty巧妙找到修改某个变量的准确代码位置

2019独角兽企业重金招聘Python工程师标准>>> 我今天的工作又遇到一个难题。前端UI右下角这个按钮被设置为"禁用(disabled)"状态。 这个按钮的可用状态由属性enabled控制。我通过调试发现&#xff0c;一旦下图第88行代码执行完毕之后&#xff0c;这个按钮的…

使用 C# 开发的轻量级开源数据库 LiteDB

你好&#xff0c;这里是 Dotnet 工具箱&#xff0c;定期分享 Dotnet 有趣&#xff0c;实用的工具或组件&#xff0c;希望对您有用&#xff01;简介 LiteDB 是一个小型、快速、轻量级的 .NET NoSQL 嵌入式数据库&#xff0c;也就是我们常说的 K/V 数据库&#xff0c;完全用 C# …

微信小程序仿微信SlideView组件slide-view

微信小程序仿微信SlideView组件。 使用 1、安装 slide-view 从小程序基础库版本 2.2.1 或以上、及开发者工具 1.02.1808300 或以上开始&#xff0c;小程序支持使用 npm 安装第三方包。 npm install --save miniprogram-slide-view2、在需要使用 slide-view 的页面 page.json 中…

hibernate 环境搭建测试

对于hibernate的介绍&#xff0c;网络上一搜一堆&#xff0c;恐怕我写的也没前辈总结的好。这个博主总结的十分好,方便大家欣赏 http://blog.csdn.net/liujiahan629629/article/details/21442607 真正要掌握&#xff0c;还得需要自己动手&#xff0c;才能丰衣足食。所需jar包j…