java運行時異常中文_JAVA——運行時異常(RuntimeException)

Exception中有一個特殊的子類異常RuntimeException運行時異常。

如果在函數內拋出該異常,函數上可以不用聲明,編譯一樣通過。

如果在函數上聲明了該異常。調用者可以不用進行處理。編譯一樣通過。

之所以不用在函數上聲明,是因為不需要讓調用者處理。

當該異常發生,希望程序停止,因為在運行時,出現了無法繼續運算的情況,希望停止程序后,對代碼進行修正。

自定義異常時:如果該異常的發生,無法再繼續進行運算,就讓自定義異常繼承RuntimeException.

對于異常分兩種:

1、編譯時被監測的異常

2、編譯時不被監測的異常(運行時異常,RuntimeException以及其子類)

class FuShuException extends RuntimeException {

FuShuException(String msg)

{

super(msg);

}

}

class Demo {

int div(int a,int b)//函數上沒有拋出異常,因為FuShuException是RuntimeException的子類

{

if(b<0)

throw new FuShuException("除數為負數");

if(b==0)

throw new ArithmeticException("被0除了");

return a/b;

}

}

class ExceptionDemo7 {

public static void main(String[] args)

{

Demo d = new Demo();

int x = d.div(4,-4);

System.out.println("x="+x);

}

}

輸出結果:

Exception in thread "main" FuShuException: 除數為負數

at Demo.div(ExceptionDemo00.java:15)

at ExceptionDemo00.main(ExceptionDemo00.java:28)

舉例:

問題是:

電腦冒煙

電腦藍屏

要對問題進行描述,封裝成對象。

可是當冒煙發生后,出現講課進度無法繼續。

出現了老師的問題:課時計劃無法完成

class LanPingException extends Exception {

LanPingException(String message)

{

super(message);

}

}

class MaoYanException extends Exception {

MaoYanException(String message)

{

super(message);

}

}

class NoPlanException extends Exception {

NoPlanException(String msg)

{

super(msg);

}

}

class Computer {

private int state = 3;

public void run()throws LanPingException,MaoYanException

{

if(state==2)

throw new LanPingException("藍屏了");

if(state==3)

throw new MaoYanException("冒煙了");

System.out.println("電腦運行");

}

public void reset()

{

state = 1;

System.out.println("電腦重啟");

}

}

class Teacher {

private String name;

private Computer cmpt;

Teacher(String name)

{

this.name = name;

cmpt = new Computer();

}

public void prelect()throws NoPlanException

{

try

{

cmpt.run();

}

catch(LanPingException e)

{

cmpt.reset();

}

catch(MaoYanException e)

{

test();

throw new NoPlanException("課時無法繼續"+e.getMessage());

}

System.out.println("講課了!");

}

public void test()

{

System.out.println("LianXi");

}

}

class ExceptionTest {

public static void main(String[] args)

{

Teacher t = new Teacher("Wang");

try

{

t.prelect();

}

catch(NoPlanException e)

{

System.out.println(e.toString());

System.out.println("換老師或者放假");

}

}

}

運行結果:

LianXi

NoPlanException: 課時無法繼續冒煙了

換老師或者放假

舉例:

有一個圓形和長方形。都可以獲取面積。

對于面積如果出現非法的數值,視為是獲取面積出現問題。問題通過異常來表示。現在對這個程序進行基本設計。

//定義一個異常,讓它繼承運行時異常

class NoValueException extends RuntimeException {

NoValueException(String msg)

{

super(msg);

}

}

//定義一個接口

interface Shape {

void getArea();

}

//長方形實現Shape接口

class Rectangle implements Shape {

private int len,wid;

Rectangle(int len,int wid)//這里不用throws NoValueException,因為NoValueException是RuntimeException的子類

{

if(len<=0||wid<=0)

throw new NoValueException("出現非法值");

this.len = len;

this.wid = wid;

}

public void getArea()

{

System.out.println(len*wid);

}

}

class Circle implements Shape {

private double radius;

public static final double PI = 3.14;

Circle(double radius)

{

if(radius<=0)

throw new NoValueException("非法");

this.radius = radius;

}

public void getArea()

{

System.out.println(PI*radius*radius);

}

}

class Demo2

{

public static void main(String[] args)

{

Rectangle r = new Rectangle(3,4);

r.getArea();

Circle circle = new Circle(-8);

circle.getArea();

System.out.println("over");

}

}

6ba31a609bbb382c093a1c4f2d784b3e.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/397594.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/397594.shtml
英文地址,請注明出處:http://en.pswp.cn/news/397594.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

內置函數isinstance和issubclass

1. isinstance&#xff08;obj,class&#xff09; 判斷對象obj是不是由class生成的對象。 class Foo:passobjFoo()print(isinstance(obj,Foo))obj是Foo的生成的對象&#xff0c;返回True。如果不是&#xff0c;則返回False。 d{x:1} #ddict({x:1} #)print(type(d) is dict) pri…

JavaOne 2016——首日亮點

今年&#xff0c;為期5天的JavaOne會議中&#xff0c;4個會場的議題都進行了直播&#xff0c;演講稿也在播出之后一并提供。\\來自Terracotta公司EHCache團隊的Henri Tremblay&#xff0c;做了主題為《學習Java 8&#xff1a;Lambda表達式和函數式編程&#xff08;Learn Java 8…

指針數據類型 java_C/C++ 指針的小結——指針與其它數據類型(數組、字符串、函數、結構體)的關系...

一、指針與數組和字符串1、指針與數組當聲明數時&#xff0c;編譯器在連續的內存空間分配基本地址和足夠的儲存空間&#xff0c;以容納數組的所有元素。基本地址是數組第一個元素(索引為0)的存儲位置。編譯器還把數組名定義為指向第一個元素的常量指針。元素的地址是通過索引和…

Linux tr命令詳解

tr是個簡單的替換命令&#xff0c;從標準輸入中替換、縮減和/或刪除字符&#xff0c;并將結果寫到標準輸出。 tr常見命令參數 用法&#xff1a;tr [選項]... SET1 [SET2] 從標準輸入中替換、縮減和/或刪除字符&#xff0c;并將結果寫到標準輸出。-c, -C, --complement …

512M內存編譯php出錯

make時錯誤如下 1 virtual memory exhausted: Cannot allocate memory make: *** [ext/fileinfo/libmagic/apprentice.lo] Error 1 內存小造成的&#xff0c;為了成功的話需要加上參數 –disable-fileinfo即可參考鏈接&#xff1a;https://bugs.php.net/bug.php?id48809 轉載于…

Android中插件開發篇總結和概述

剛剛終于寫完了插件開發的最后一篇文章&#xff0c;下面就來總結一下&#xff0c;關于Android中插件篇從去年的11月份就開始規劃了&#xff0c;主要從三個方面去解讀Android中插件開發原理。說白了&#xff0c;插件開發的原理就是&#xff1a;動態加載技術。但是我們在開發插件…

java反射機制 路徑_Java 反射機制詳解

引言本文主要介紹Java中&#xff0c;有關反射機制、類的加載過程、以及控制反轉方面的內容。Java 反射機制Java創建對象的方式有哪些&#xff1a;new、反射、反序列化、克隆class對象獲取的方法有哪些&#xff1a;類名.class、getClass、forName、classLoader.loadClass(‘包類…

prop和attr在 jquery的

https://www.cnblogs.com/Showshare/p/different-between-attr-and-prop.html轉載于:https://www.cnblogs.com/beimingbingpo/p/9254680.html

java傳入數據庫生成柱狀圖_Java讀取數據庫數據生成柱狀圖

此案例是用swing顯示數據的。須要引入jfreechart相關包。不同版本號可能包不同樣。本人用的是此案例在ssi框架下會報錯&#xff0c;不用框架就沒問題。Java后臺邏輯代碼&#xff1a;public class BarChart {ChartPanel frame1;public BarChart() {CategoryDataset dataset get…

SVN系列操作(一)

SVN是什么&#xff1f; SVN是Subversion的簡稱&#xff0c;是一個開放源代碼的版本控制系統&#xff0c;常用于軟件開發項目中&#xff0c;實現代碼、文檔等的歷史版本保存、共享和權限管理。 進入SVN本地目錄&#xff0c;第一步操作就是update。 為什么呢&#xff1f;因為SVN是…

ubuntu-14.04.2-desktop使用方法

一、安裝VMware Tools 1. 在VMware Workstation11.1.0下安裝Ubuntu鏡像&#xff1a;ubuntukylin-14.04.2-desktop-amd64.iso 2. 點擊虛擬機菜單欄-安裝VMware Tools。 3. 在Ubuntu系統光盤中找到VMwareTools-9.9.2-2496486.tar.gz&#xff0c;右鍵復制到“桌面”&#xff0c;然…

ubuntu 跟xshell的問題

有2個分析&#xff1a; 1&#xff1a;是windos的防火墻沒有關閉 2&#xff1a;是虛擬機沒有安裝sshd服務器 ubuntu在CLI界面下輸入&#xff1a;dpkg -l |grep ssh 因為是我安裝過的sshd server 要是沒有sshd server 就要輸入 安裝。 三&#xff1a;要是安裝完之后 鏈接顯示說…

java gdal postgresql_使用GDAL/OGR操作Postgresql數據庫

&#xfeff;&#xfeff;GDAL(Geospatial Data AbstractionLibrary)是一個在X/MIT許可協議下的開源柵格空間數據轉換庫。它利用抽象數據模型來表達所支持的各種文件格式。它還有一系列命令行工具來進行數據轉換和處理。本文將使用GDAL/OGR庫讀寫Postgresql數據庫中的表&#x…

Go語言基礎之1--標識符、關鍵字、變量和常量、數據類型、Go的基本程序結構、Golang的特性...

一、前言 當我們項目較為簡單時&#xff0c;我們在src目錄下新建一個該項目目錄&#xff0c;里面存放源碼文件即可&#xff0c;見下圖&#xff1a; 當我們一個項目較為復雜時&#xff0c;我們可以在src目錄下新建一個該項目目錄&#xff0c;在針對該項目不同模塊創建不同目錄&a…

java參數轉換匹配規律_隱式轉換規則

隱式轉換在如下三種不同的情況會被考慮&#xff1a;1、當對象A調用某個方法時&#xff0c;這個方法不存在例如在前一節介紹的1 to 10。會將Int轉換為RichInt&#xff0c;然后再調用to方法。在這種情況下&#xff0c;會將對象A(方法的調用者)隱式轉換為另一個對象。2、當對象A調…

Semantic-UI的React實現(二):CSS類構造模塊

更簡單的類名標簽 Semantic-UI使用了更簡單的類名聲明。用過Bootstrap的同學都會被其復雜的類名標簽折磨過&#xff0c;例如一個簡單的按鍵樣式&#xff0c;不論顏色或是大小&#xff0c;都需要btn-前綴聲明&#xff1a; <button type"button" class"btn btn…

T-SQL LIKE子句 模糊查詢

MS SQL Server LIKE子句用于使用通配符運算符將值與類似值進行比較。 有兩個通配符與LIKE運算符結合使用: 百分號&#xff08;&#xff05;&#xff09;下劃線&#xff08;_&#xff09;百分號表示零個&#xff0c;一個或多個字符。 下劃線表示單個數字或字符。 符號可以組合使…

ext springmvc mysql_基于ExtJs6前臺,SpringMVC-Spring-Mybatis,resteasy,mysql無限極表設計,實現樹狀展示數據(treepanel)...

先從后臺講起1.表的設計2.mysql查詢很容易&#xff0c;關鍵是要把id,text,parentId查出來/p>"http://mybatis.org/dtd/mybatis-3-mapper.dtd">SELECTbp.id,bb.name brandName,bp.name text,bp.photo_url photoUrl,bp.number,bp.add_time addTime,bp.modify_tim…

C# 之 Int16 Int32 Int64 的區別

Int16 值類型表示值介于 -32768 到 32767 之間的有符號整數。 Int32 值類型表示值介于 -2,147,483,648 到 2,147,483,647 之間的有符號整數。 Int64 值類型表示值介于 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 之間的整數。 --------------------------------…

php說明代碼怎么寫,代碼怎么寫 - 起步 - PHP基礎 - KK的小故事

起步 - 代碼怎么寫 作者&#xff1a;KK發表日期&#xff1a;2016.3.9要寫PHP代碼就需要建立.php后綴的文件,并且在文件里要以<?php 具體代碼 ?>這樣的形式來書寫PHP代碼我們在網站目錄下新建一個叫index.php的文件,并在里面編寫這樣的代碼:echo Hello World!;?>然后…