cronschedulebuilder 到時還沒運行完_為什么我的軟件編譯時沒問題,運行時卻出錯?...

827f3cc3ee43d1c5fcfcc2409b103381.png

首先有件事要和大家說一下:我的公眾號現在可以留言了!

出于種種不可抗力的原因(你們懂的),2018 年 3 月 12 號之后注冊的公眾號將不帶有留言功能,并且前三個月內注冊但并未使用的公眾號的留言功能也會被一并回收,所以我這個號注冊時就沒有留言了。最近我發現了可以用于留言的小程序,所以就借著這篇文章試驗一下這種留言功能。希望看到這篇文章的小伙伴們能夠給我留個言,我會一一回復的。


從開發工具談起:

a8039a85acca19e9ebd80aca0abce569.png

這是我平常用的幾個編輯器。記得我剛開始學 C 語言,學 Java 的時候,還是用 Notepad++ 這種文本編輯器寫代碼,老師說是為了打基礎,加深記憶。后來做開發,開始接觸一些開發工具,什么 Dev C++,Eclipse,VS 還有 AndroidStudio 啥的,剛開始用的時候就覺得這些工具太神奇了,不光是組織你的工程文件,更是在你編寫代碼的時候幫你檢查錯誤。我相信,代碼自動補全和糾錯一定是一個開發者最常用到的功能。不過,我想你也一定不建議編程初學者在學習的時候就使用這種東西,因為功能實在是太好用了!(以至于不怎么需要動腦很多工作就自動完成了)

盡管當時覺得神奇,但是現在的我明白的:開發工具里的糾錯機制,正是來源于 Java 里對異常的判斷。編譯通過的軟件運行卻崩潰,也與它有關。借著還是初學者時的提問,今天再來把這個基礎知識復習一下


1.異常概述:
學過 Java 的小伙伴們應該都知道,在 Java 里,異常主要分兩種:Error (錯誤)和 Exception (例外),它們都繼承自 Throwable 類。也就是說 Java 中所有的異常處理機制都來源于這個類。兩個子類的區別非常好判斷,其實只要看名字就能知道:Error,表示“錯誤”,尤其是指那些比較嚴重的錯誤,比如保存文件時磁盤空間已滿。這種情況已經構成了代碼運行中徹徹底底的“錯誤”,而并非修改代碼就能解決的,所以作為開發者不必解決,只需要妥善地退出并彈出友好的提示即可。Exception 表示“例外”,這兩個字表示的含義很明確:一般沒事——只要你能按“規矩”使用/編寫軟件。這類異常是開發者所需要關心的。

2.代碼中的異常:

忘加分號、未定義變量之類的錯誤,開發工具都能在編寫時檢查出來,這類代碼中的問題如果不解決,就無法通過編譯,被稱為編譯時異常。而如果代碼通過了編譯,軟件開始運行后發生的錯誤則被成為運行時異常(RuntimeException)。比如在計算器軟件中讓 0 作為除數,開發者應該處理這樣的“例外”。這是 Exception 類里包涵的兩類情況。有一個簡單的判別方法:如果一個類繼承自 RuntimeException 類,就是運行時異常;如果直接繼承自 Exception 就是編譯時異常。

c02503e560250aff45c0566144e4445e.png

3.如何處理異常:

首先應該想一下,為什么我們非要去處理異常?如果不去處理的話又會發生什么?

在 Eclipse 輸入了以下代碼:

5cfe5849160e51e74efcd25e2138a6a9.png

運行后的控制臺輸出:

9edfcfc9482e43fb13f68918770157dd.png

顯然,程序會報錯。更重要的是程序會直接中斷(在沒有提示,更沒有安全措施的情況下),這才是開發者需要妥善處理異常的原因。

解決方法:很簡單,為了使得可能出現的異常得到處理并且程序不會中斷,代碼有兩種編寫方式,一種是 try...catch...finally組織代碼,另一種 throw/throws (直接拋出給調用者)。基本的用法我想大家都會用,我就不多說了,忘了的話稍微查一下書即可。值得注意的是,我看過一些視頻教程里的老師為了圖方便,在演示時把可能存在問題的大段代碼(并不是每行代碼都涉及異常)都用 try 給包住,然后直接只 catch 一個“Exception“。在課堂上這樣節省時間無可厚非,但是開發時最好不要這樣圖方便。軟件運行時,Java 虛擬機遇到 try 就進入了異常處理機制,會預留計算機資源來應對可能出現的異常。”try“ 里包含的代碼越多,可能涉及的異常種類就越多,就會在運行時占用更多資源(而并沒有真正使用),造成浪費。所以 try 結構里的代碼越少越好。當 try{} 里的代碼出現異常時,虛擬機會創建一個 Exception 對象與 catch 里的 Exception 參數進行匹配,然后運行對應catch里的代碼。

“throws ”跟在方法名之后,表示將可能出現的異常拋出,更多地只是一種標記,而 “throw”是一個具體的動作 —— 拋出一個異常對象。


好的,有關異常的內容就先寫到這,但還沒完。未來幾天我會再把 IO 方面的內容復盤一下,涉及異常的會一并補充。

謝謝你能讀到這里,歡迎留言討論!

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

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

相關文章

Canvas createImageData

createImageData() 方法創建新的空白 ImageData 對象。新對象的默認像素值 transparent black。 對于 ImageData 對象中的每個像素,都存在著四方面的信息,即 RGBA 值: R - 紅色 (0-255)G - 綠色 (0-255)B - 藍色 (0-255)A - alpha 通道 (0-25…

青島計算機類職業中學,青島最好的職業學校有哪些?

青島海洋職業學校是一所由青島市教育局批準,國家承認學歷的重點中等職業學校。學校占地200余畝,建筑面積5萬平方米,在籍學生3975人。學校擁有雄厚的師資力量,以專職教師為主,是一支政治素質好,師德水平高、…

測試1

2018/06/03 測試我的隨筆轉載于:https://www.cnblogs.com/xixirui/p/9129252.html

使用Javascript正則表達式來格式化XML內容

2019獨角獸企業重金招聘Python工程師標準>>> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head><meta http-equivcontent-type content"text/html; charsetUTF-8"><title>Xml格式化…

mysql vfp_vfp+mysql問題|交流區 - 梅子Visual FoxPro 編程 - Powered by phpwind

感謝樓上,請現場指導,拜謝c_pzwhfiellist""c_pzwhbglist""For i1 To Fcount()-1c_pzwhfiellistc_pzwhfiellistField(i)","c_pzwhbglistc_pzwhbglistField(i)Space(1)"pzwhk."Field(i)","Chr(10)Endforc_pzwhfiellistc_pzwhf…

Nginx 筆記與總結(3)配置虛擬主機

Nginx 重啟的另外一種方式&#xff0c;相當于 kill -HUP cat /usr/local/nginx/logs/nginx.pid&#xff1a; /usr/local/nginx/sbin/nginx -s reload停止 Nginx 的另外一種方式&#xff1a; /usr/local/nginx/sbin/nginx -s stop重讀日志文件的另一種方式&#xff0c;相當于 …

計算機如何查找目標,如何使用命令行查找計算機地理位置? | MOS86

有多種方法可以從IP地址中了解計算機的位置&#xff0c;但如果您決定使用命令行查找信息&#xff0c;那么您如何處理&#xff1f;今天今天的問題Screenshot由Paul Fenwick(Flickr)提供。問題SuperUser閱讀器AlikElzin-kilaka想知道如何找到一臺電腦首先&#xff0c;AlikElzin-k…

Nmap命令的常用實例

一、Nmap簡介 nmap是一個網絡連接端掃描軟件&#xff0c;用來掃描網上電腦開放的網絡連接端。確定哪些服務運行在哪些連接端&#xff0c;并且推斷計算機運行哪個操作系統&#xff08;這是亦稱 fingerprinting&#xff09;。它是網絡管理員必用的軟件之一&#xff0c;以及用以評…

mysql sqlexception_c-很奇怪-mysql的sql :: SQLException未被其類型捕...

我正在使用帶有此(稍微簡化)代碼的mysql c連接器.try{statement->setString(1, word);statement->executeUpdate();}catch( sql::SQLException& e ){// I dont get herereturn sqlerrno_to_error_code( e.getErrorCode() );}catch( std::exception& e ){// I do …

Linux Kernel系列 - 黃牛X內核代碼凝視

Hanks.Wang - 專注于操作系統與移動安全研究。Linux-Kernel/SELinux/SEAndroid/TrustZone/Encription/MDM Mail - byhankswanggmail.com 牛X的內核代碼凝視 大牛的代碼質量高穩定性好&#xff0c;并且邏輯清晰易讀性比較強&#xff0c;今天看到Linux Kernel紅黑樹的代碼時&a…

電子商務計算機網絡安全技術教案,網絡安全技術教案.pdf

名師精編 優秀教案《網絡安全技術》教案2011-2012 第 2 學期適用班級&#xff1a; 2010 級計算機網絡技術專業編寫&#xff1a;徐英武名師精編 優秀教案第 1~2 課時周次 &#xff11; 日期 2012 年 02 月 14 日 授課班級 2010 級計算機網絡技術課題 網絡安全概述 課 型 理論課教…

技術文章匯總

點擊以下鏈接&#xff0c;可以查看相關技術文章&#xff1a;包括APP軟件開發、手機軟件開發、嵌入式開發、Java和C/C編程&#xff0c;同時涉及原型設計、效果圖設計、切圖、網絡、多媒體、加密、字符編碼、通信原理、測試和項目管理等各方面的知識。APP開發實戰手機開發實戰技術…

咋樣查mysql的url_eclipse用jdbc連接mysql數據庫時,url是填什么?怎樣找出地址?

展開全部 jdbc連接mysql數據62616964757a686964616fe78988e69d8331333337623535庫的url為: jdbc:mysql://主機名或IP抵制:端口號/數據庫名?useUnicode=true&characterEncoding=UTF-8 jdbc連接其他數據庫的連接字符串寫法為:1、Oracle8/8i/9i數據庫(thin模式) Class.for…

HP服務器ile進系統,HP GEN10服務器UEFI安裝Windows Sverver 2012 R2教程

1.操作系統&#xff1a;Windows Server 2012 R2 VL with Update (x64) – DVD (Chinese-Simplified)&#xff0c;MSDN下載地址&#xff1a;ed2k://|file|cn_windows_server_2012_r2_vl_with_update_x64_dvd_6052729.iso|5545527296|BD499EBCABF406AB82293DD8A5803493|/2.鏡像寫…

[程序設計語言] 堆和棧的全面總結

操作系統堆棧&#xff1a; 分配由編譯器自己主動和自己主動釋放。對應于堆棧的函數。參數存儲功能值、函數調用結束后完成值和局部變量的函數體內。段內存空間。其操作和組織方式與數據結構中的棧十分相似。棧是為了運行線程留出的內存空間。當調用函數時創建棧。當函數運行完畢…

py文件的操作

文件操作基本流程。 計算機系統分為&#xff1a;計算機硬件&#xff0c;操作系統&#xff0c;應用程序三部分。 我們用python或其他語言編寫的應用程序若想要把數據永久保存下來&#xff0c;必須要保存于硬盤中&#xff0c;這就涉及到應用程序要操作硬件&#xff0c;眾所周知&a…

CentOS系統啟動流程你懂否

一、Linux內核的組成相關概念&#xff1a;Linux系統的組成部分&#xff1a;內核根文件系統內核&#xff1a;進程管理、內存管理、網絡協議棧、文件系統、驅動程序。IPC(Inter-Process Communication進程間通信):就是指多個進程之間相互通信&#xff0c;交換信息的方法。Linux I…

怎樣用css設置圖片下的投影,css – 做這種投影的最佳方法是什么?

如果您更喜歡使用CSS來創建該類型的陰影,則可以將CSS3用作seen here!CSS/* Lifted corners */.lifted {-moz-border-radius:4px;border-radius:4px;}.lifted:before,.lifted:after {bottom:15px;left:10px;width:50%;height:20%;max-width:300px;-webkit-Box-shadow:0 15px 10p…

mysql 排版 指令_Mysql語句排版

SQL 高效排版指北統一 SQL 排版的相關用法&#xff0c;極大提高編寫和維護 SQL 的效率。注: column 選取的字段&#xff1b;table 選取的表名語句結構錯誤SELECT column1 FROM table1 ORDER BY column1正確SELECTcolumn1FROMtable1ORDER BYcolumn1解析SQL 語句在內部執行時會…

Linux命令學習手冊-tr命令 2015-07-26 20:35 9人閱讀 評論(0) 收藏...

tr [OPTION]... SET1 [SET2] [功能] 轉換或者刪除字符。 [描述] tr指令從標準輸入設備讀取數據&#xff0c;經過字符串轉譯后&#xff0c;輸出到標準輸出設備。 通過使用 tr&#xff0c;您可以非常容易地實現 sed 的許多最基本功能。您可以將 tr 看作為 sed 的&#xff08…