




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Java開發日常總結Java開發日常總結撰寫作者:王 浩編寫日期:2015年4月28日目錄 TOC o 1-3 h z u HYPERLINK l _Toc418115613 1JavaWeb前端技術 PAGEREF _Toc418115613 h 4 HYPERLINK l _Toc418115614 1.1超文本標記語言(HTML) PAGEREF _Toc418115614 h 4 HYPERLINK l _Toc418115615 1.1.1常用標簽 PAGEREF _Toc418115615 h 4 HYPERLINK l _Toc418115616 1.2CSS樣式+DIV布局 P
2、AGEREF _Toc418115616 h 4 HYPERLINK l _Toc418115617 1.2.1CSS選擇器說明 PAGEREF _Toc418115617 h 4 HYPERLINK l _Toc418115618 1.2.2DIV布局技巧 PAGEREF _Toc418115618 h 4 HYPERLINK l _Toc418115619 1.3JS+AJAX+Jquery PAGEREF _Toc418115619 h 4 HYPERLINK l _Toc418115620 1.3.1JS常用說明 PAGEREF _Toc418115620 h 4 HYPERLINK
3、l _Toc418115621 1.3.2AJAX PAGEREF _Toc418115621 h 4 HYPERLINK l _Toc418115622 1.3.3Jquery PAGEREF _Toc418115622 h 4 HYPERLINK l _Toc418115623 2Java基礎 PAGEREF _Toc418115623 h 5 HYPERLINK l _Toc418115624 2.1java基礎 PAGEREF _Toc418115624 h 5 HYPERLINK l _Toc418115625 2.1.1配置jdk環境變量 PAGEREF _Toc418115625
4、 h 5 HYPERLINK l _Toc418115626 2.1.2java基本數據類型 PAGEREF _Toc418115626 h 6 HYPERLINK l _Toc418115627 2.1.3Java的三大特征 PAGEREF _Toc418115627 h 6 HYPERLINK l _Toc418115628 2.2集合 PAGEREF _Toc418115628 h 7 HYPERLINK l _Toc418115629 2.3多線程 PAGEREF _Toc418115629 h 7 HYPERLINK l _Toc418115630 2.4設計模式 PAGEREF _
5、Toc418115630 h 7 HYPERLINK l _Toc418115631 3Javaweb開發 PAGEREF _Toc418115631 h 7 HYPERLINK l _Toc418115632 3.1JSP PAGEREF _Toc418115632 h 7 HYPERLINK l _Toc418115633 3.1.1三級標題 PAGEREF _Toc418115633 h 7 HYPERLINK l _Toc418115634 3.2常用框架(SSH) PAGEREF _Toc418115634 h 7 HYPERLINK l _Toc418115635 3.2.1Str
6、uts PAGEREF _Toc418115635 h 7 HYPERLINK l _Toc418115636 3.2.2Spring PAGEREF _Toc418115636 h 7 HYPERLINK l _Toc418115637 3.2.3Hibernate PAGEREF _Toc418115637 h 7 HYPERLINK l _Toc418115638 3.2.4Mybatis PAGEREF _Toc418115638 h 7 HYPERLINK l _Toc418115639 4數據庫(DB) PAGEREF _Toc418115639 h 7 HYPERLINK l _
7、Toc418115640 4.1基本SQL語法 PAGEREF _Toc418115640 h 7 HYPERLINK l _Toc418115641 4.1.1三級標題 PAGEREF _Toc418115641 h 8 HYPERLINK l _Toc418115642 4.2MySQL數據庫 PAGEREF _Toc418115642 h 8 HYPERLINK l _Toc418115643 4.3Oracle數據庫 PAGEREF _Toc418115643 h 8 HYPERLINK l _Toc418115644 4.4DB2數據庫 PAGEREF _Toc418115644 h
8、 8 HYPERLINK l _Toc418115645 4.5Sqlserver2000數據庫 PAGEREF _Toc418115645 h 8 HYPERLINK l _Toc418115646 4.6Informix數據庫 PAGEREF _Toc418115646 h 8 HYPERLINK l _Toc418115647 5web服務器 PAGEREF _Toc418115647 h 8 HYPERLINK l _Toc418115648 5.1Tomcat PAGEREF _Toc418115648 h 8 HYPERLINK l _Toc418115649 5.1.1三級標題
9、PAGEREF _Toc418115649 h 8 HYPERLINK l _Toc418115650 5.2Weblogic服務器 PAGEREF _Toc418115650 h 8 HYPERLINK l _Toc418115651 5.3Websphere(WAS)服務器 PAGEREF _Toc418115651 h 8 HYPERLINK l _Toc418115652 6系統操作說明 PAGEREF _Toc418115652 h 9 HYPERLINK l _Toc418115653 6.1在windows下安裝虛擬機 PAGEREF _Toc418115653 h 9 HYPE
10、RLINK l _Toc418115654 6.2Linux系統 PAGEREF _Toc418115654 h 9 HYPERLINK l _Toc418115655 6.2.1三級標題 PAGEREF _Toc418115655 h 9 HYPERLINK l _Toc418115656 6.3Windows系統 PAGEREF _Toc418115656 h 9 HYPERLINK l _Toc418115657 6.3.1在dos下常用命令及含義 PAGEREF _Toc418115657 h 9 HYPERLINK l _Toc418115658 7常用開發工具 PAGEREF _T
11、oc418115658 h 10 HYPERLINK l _Toc418115659 7.1java開發工具 PAGEREF _Toc418115659 h 10 HYPERLINK l _Toc418115660 7.1.1三級標題 PAGEREF _Toc418115660 h 10 HYPERLINK l _Toc418115661 7.2頁面設計工具 PAGEREF _Toc418115661 h 10 HYPERLINK l _Toc418115662 7.3數據庫客戶端工具 PAGEREF _Toc418115662 h 10 HYPERLINK l _Toc418115663 7
12、.4數據建模工具 PAGEREF _Toc418115663 h 10 HYPERLINK l _Toc418115664 7.5流程設計工具 PAGEREF _Toc418115664 h 10 HYPERLINK l _Toc418115665 7.6演示編輯工具 PAGEREF _Toc418115665 h 10 HYPERLINK l _Toc418115666 8日常開發異常 PAGEREF _Toc418115666 h 10 HYPERLINK l _Toc418115667 8.1Java程序開發中的異常 PAGEREF _Toc418115667 h 10 HYPERLIN
13、K l _Toc418115668 8.1.1三級標題 PAGEREF _Toc418115668 h 10 HYPERLINK l _Toc418115669 8.2前端頁面異常收集 PAGEREF _Toc418115669 h 11 HYPERLINK l _Toc418115670 8.3服務器異常收集 PAGEREF _Toc418115670 h 11 HYPERLINK l _Toc418115671 8.4數據庫異常收集 PAGEREF _Toc418115671 h 11 HYPERLINK l _Toc418115672 8.5操作系統操作時遇到的問題和出現的異常 PAGE
14、REF _Toc418115672 h 11 HYPERLINK l _Toc418115673 8.5.1Windows系統下 PAGEREF _Toc418115673 h 11 HYPERLINK l _Toc418115674 8.5.2Linux系統下 PAGEREF _Toc418115674 h 11JavaWeb前端技術超文本標記語言(HTML)常用標簽四級標題五級標題CSS樣式+DIV布局 CSS選擇器說明 DIV布局技巧JS+AJAX+JqueryJS常用說明AJAXJqueryJava基礎java基礎配置jdk環境變量具體操作如下:1.以jdk安裝在D:java目錄下為例
15、。點擊我的電腦/計算機屬性高級系統設置環境變量如圖:2. 系統變量新建 JAVA_HOME 變量,變量值填寫jdk的安裝目錄(本人是 D:Javajdk1.6.0_10);3. 系統變量尋找 Path 變量編輯, 在變量值最后輸入 %JAVA_HOME%bin;%JAVA_HOME%jrebin;4. 系統變量新建 CLASSPATH 變量, 變量值填寫 .;%JAVA_HOME%lib;%JAVA_HOME%libtools.jar;注意:最前面有一點5.檢驗是否安裝配置成功,運行cmd輸入java version, 若如圖所示 顯示版本信息 則說明安裝和配置成功。如圖:Jdk(java d
16、evelopment kit )java開發和運行環境。Jvm:java虛擬機其中javac是用來編譯java程序,java是運行java程序在dos下演示java程序運行dosjavac java文件(Test.java)java 編譯后的文件(不帶后綴如:java)java基本數據類型java中的數據類型基本數據類型(8種):布爾類型(boolean)字節類型(byte)短整型(short)整形(int)長整形(long)字符型(char)單精度浮點類型(float)雙精度浮點類型(double)引用數據類型:數組,類,接口Java中的語句分支語句if:單分支語句,有多個判斷條件比如學習成
17、績(cj80&cj=90),還有更復雜的判斷等。if().else.2.switch語句,多分支語句,但入口判斷只有一個即判斷條件比較單一如下:public static String month(int strs)String str=;switch (4)case 0:str=strs+星期日;break;case 1:str=strs+星期一;break;case 2:str=strs+星期二;break;case 3:str=strs+星期三;break;case 4:str=strs+星期四;break;case 5:str=strs+星期五;break;case 6:str=str
18、s+星期六;break;return str;For循環ForeachWhile迭代器ItoratorJava的三大特征繼承(extends):即之類重用父類的代碼,之類可以繼承父類,抽象類,以及接口;注意:接口可以繼承接口,但其他類(包括抽象類不能繼承接口,只能實現(implements)接口,接口可以繼承接口);封裝:封裝隱藏了類的內部實現機制,從而可以在不影響使用者的前提下改變類的內部結構,同時保護了數據。多態:接口實現,繼承父類進行方法重寫,同一個類中進行方法重載重載:方法名一致,方法中的參數不同,如某一類中的構造方法。調用時通過調用不同的參數的方法。(靜態多態性)重寫(Overrid
19、ing):子類繼承父類同時覆蓋的方法,但記住一點方法名相同,參數也相同。(動態多態性)集合集合和數組的區別數組的長度是固定的,如圖(String strs=“1”,”2”,”3”,”4”,” 5” ).集合的長度是可變的,可以動態增加比如(一個用戶信息列表)。集合關系圖:Collectin接口實現類中存放的元素,Map接口實現的是類中的鍵值對如(1,”zhangsanfeng”).Set:特點是無順序,無重復public static Set sets()Set st=new HashSet();st.add(2);st.add(2);st.add(24);st.add(23);st.add(
20、24);st.add(1);Iterator it=st.iterator();while(it.hasNext()System.out.println(it.next();return st;運行結果:22324/注意:將重復的數據刪除,僅保留一個相同的值。List:有順序(按插入的先后順序執行),可重復(同時保留重復的數據)如public static List lists()List ls=new ArrayList();ls.add(2);ls.add(2);ls.add(24);ls.add(23);ls.add(24);ls.add(1);Iterator it=ls.iterat
21、or();while(it.hasNext()System.out.println(it.next();return ls;執行結果:222423241HashSet和LinkedHashSet:HashSet,為快速查找而設計的Set。存入HashSet的對象必須實現hashCode()和equals()。LinkedHashSet,具有HashSet的查詢速度,且內部使用鏈表維護元素的順序(插入的次序),于是在使用迭代器遍歷Set時,結果會按元素插入的次序顯示。TreeSet: 提供排序功能的Set,底層為樹結構。相比較HashSet其查詢速度低,如果只是進行元素的查詢,我們一般使用Has
22、hSet。ArrayList和LinkedList:ArrayList底層采用數組實現,具有較高的查詢速度。LinkedList底層采用雙向循環列表實現,進行插入和刪除操作時具有較高的速度,我們還可以使用LinkedList來實現隊列和棧。TreeMap和HashMap:HashMap具有較高的速度(查詢增刪),TreeMap則提供了按照鍵進行排序的功能。public static Map maps()Map hm=new HashMap();hm.put(1, 22);hm.put(2, 33);hm.put(3, 44);hm.put(4, 55);Set st=hm.entrySet()
23、;Iterator it=st.iterator();while(it.hasNext()System.out.println(it.next();return hm;運行結果:1=222=333=444=55多線程設計模式Javaweb開發JSP三級標題四級標題五級標題六級標題常用框架(SSH)StrutsSpringHibernateMybatis數據庫(DB)DML,DDL,DCL,DQL區別SQL語言包括三種主要程序設計語言類別的語句:數據定義語言(DDL),數據操作語言(DML)及數據控制語言(DCL), 數據庫查詢(DQL)。DML(Data Manipulation Langua
24、ge): 數據操縱語言命令使用戶能夠查詢數據庫以及操作已有數據庫中的數據的計算機語言。DML分成交互型DML和嵌入型DML兩類。 依據語言的級別,DML又可分成過程性DML和非過程性DML兩種。 如insert,delete,update,select(插入、刪除、修改、檢索)等都是DML. 交互型DML:這類DML自成系統,可在終端上直接對數據庫進行操作。嵌入型DML:這類DML是嵌入在主語言中使用。此時主語言是經過擴充能處理DML語句的語言。過程性DML:用戶編程時,不僅需要指出“做什么”(需要什么樣的數據),還需要指出“怎么做”(怎么獲得數據)。層狀、網狀的DML屬于過程性語言。非過程性
25、DML:用戶編程時,只需要指出“做什么”,不需要指出“怎么做”。關系型DML屬于非過程性語言。DDL(DataDefinition Language)數據庫模式定義語言是用于描述數據庫中要存儲的現實世界實體的語言。一個數據庫模式包含該數據庫中所有實體的描述定義。這些定義包括結構定義、操作方法定義等。創建表create table tabname,drop,alter,創建視圖,創建存儲過程,索引等操作。DCL(DataControl Language)是數據庫控制語言。是用來設置或更改數據庫用戶或角色權限的語句,包括(grant,deny,revoke等)語句。在默認狀態下,只有sysadmi
26、n,dbcreator,db_owner或db_securityadmin等人員才有權力執行DCLDCL數據庫控制語言不同于程序設計語言,SQL語言(結構化程序設計語言)的組成部分包括了DCL數據庫控制語言.DQL(Data QueryLanguage SELECT) 數據查詢語言。是在DML中insert ,update,delete,select中拆出來的select查詢語言。基本SQL語法創建表創建部門表:-創建表CREATE TABLE t_dept ( dept_id integer not NULL, dept_code varchar (100), dept_name VARCH
27、AR(100), t_p_dept varchar(100), t_deptdesc varchar(256), PRIMARY KEY(dept_id);-修改表名-增加表字段alter table t_user add dept_id integer; -刪除字段alter table t_dept drop column bak1; 三級標題四級標題五級標題六級標題MySQL數據庫分頁數據庫分頁使用關鍵字“limit”其中第一個參數:從多少行開始,第二個參數:顯示多少行。如student表select * from student order by id desc limint 20,1
28、0Mysql中的存儲過程的寫法DELIMITER $USE demodb$DROP PROCEDURE IF EXISTS insrtData$CREATE DEFINER=rootlocalhost PROCEDURE insrtData(idINT,NAME VARCHAR(20),score DOUBLE)BEGIN SELECT * FROM student WHERE 1=1 ORDER BY id DESC; END$DELIMITER ;告訴mysql解釋器,該段命令是否已經結束了,mysql是否可以執行了。默認情況下,delimiter是分號;。使用call來執行存儲過程CAL
29、L insrtData(14,lisi,60.00);Oracle數據庫分頁Oracle分頁使用關鍵字rownum ,示例是查詢30到40之間的10條數據。select * from (select rownum r,* from t where r30DB2數據庫分頁Db2分頁使用函數rownumber(),over(),如示例:select * from( select id,user_id,procduce,rownumber() over(order by id asc) rowsid from t_order) as a where a.rowsid=2 and a.rowsid右鍵
30、-屬性-高級-環境變量在系統變量中找到Path選項,點擊編輯,增加變量值:%SystemRoot%/system32;%SystemRoot%;%SystemRoot%/system32/WBEM即可。win7 telnet命令無法開啟的解決方案(不是內部命令或外部命令)原因:在Wingdows XP上telnet都是已經安裝好的,直接就可用,但是Win7是沒有這個功能的,都需要后來自己安裝的,下面就看一看步驟。解決方法:控制面板程序打開或關閉windows功能”,在里面你可以看到許多服務項,選擇“telnet服務器”和“telnet客戶端”確定即可。Linux系統下附錄資料:如何處理Java
31、異常及常見異常六種異常處理的陋習你覺得自己是一個Java專家嗎?是否肯定自己已經全面掌握了Java的異常處理機制?在下面這段代碼中,你能夠迅速找出異常處理的六個問題嗎? 1 OutputStreamWriter out = . 2 java.sql.Connection conn = . 3 try / 4 Statement stat = conn.createStatement(); 5 ResultSet rs = stat.executeQuery( 6 select uid, name from user); 7 while (rs.next() 8 9 out.println(ID
32、: + rs.getString(uid) / 10 ,姓名: + rs.getString(name); 11 12 conn.close(); / 13 out.close(); 14 15 catch(Exception ex) / 16 17 ex.printStackTrace(); /, 18 作為一個Java程序員,你至少應該能夠找出兩個問題。但是,如果你不能找出全部六個問題,請繼續閱讀本文。 本文討論的不是Java異常處理的一般性原則,因為這些原則已經被大多數人熟知。我們要做的是分析各種可稱為“反例”(anti-pattern)的違背優秀編碼規范的常見壞習慣,幫助讀者熟悉這些典
33、型的反面例子,從而能夠在實際工作中敏銳地察覺和避免這些問題。 反例之一:丟棄異常 代碼:15行-18行。 這段代碼捕獲了異常卻不作任何處理,可以算得上Java編程中的殺手。從問題出現的頻繁程度和禍害程度來看,它也許可以和C/C+程序的一個惡名遠播的問題相提并論?不檢查緩沖區是否已滿。如果你看到了這種丟棄(而不是拋出)異常的情況,可以百分之九十九地肯定代碼存在問題(在極少數情況下,這段代碼有存在的理由,但最好加上完整的注釋,以免引起別人誤解)。 這段代碼的錯誤在于,異常(幾乎)總是意味著某些事情不對勁了,或者說至少發生了某些不尋常的事情,我們不應該對程序發出的求救信號保持沉默和無動于衷。調用一下
34、printStackTrace算不上“處理異常”。不錯,調用printStackTrace對調試程序有幫助,但程序調試階段結束之后, printStackTrace就不應再在異常處理模塊中擔負主要責任了。 丟棄異常的情形非常普遍。打開JDK的ThreadDeath類的文檔,可以看到下面這段說明:“特別地,雖然出現ThreadDeath是一種正常的情形,但ThreadDeath類是Error而不是Exception的子類,因為許多應用會捕獲所有的Exception然后丟棄它不再理睬。”這段話的意思是,雖然ThreadDeath代表的是一種普通的問題,但鑒于許多應用會試圖捕獲所有異常然后不予以適當
35、的處理,所以JDK把 ThreadDeath定義成了Error的子類,因為Error類代表的是一般的應用不應該去捕獲的嚴重問題。可見,丟棄異常這一壞習慣是如此常見,它甚至已經影響到了Java本身的設計。 那么,應該怎樣改正呢?主要有四個選擇: 1、處理異常。針對該異常采取一些行動,例如修正問題、提醒某個人或進行其他一些處理,要根據具體的情形確定應該采取的動作。再次說明,調用printStackTrace算不上已經“處理好了異常”。 2、重新拋出異常。處理異常的代碼在分析異常之后,認為自己不能處理它,重新拋出異常也不失為一種選擇。 3、把該異常轉換成另一種異常。大多數情況下,這是指把一個低級的異
36、常轉換成應用級的異常(其含義更容易被用戶了解的異常)。 4、不要捕獲異常。 結論一:既然捕獲了異常,就要對它進行適當的處理。不要捕獲異常之后又把它丟棄,不予理睬。 反例之二:不指定具體的異常 代碼:15行。 許多時候人們會被這樣一種“美妙的”想法吸引:用一個catch語句捕獲所有的異常。最常見的情形就是使用catch(Exception ex)語句。但實際上,在絕大多數情況下,這種做法不值得提倡。為什么呢? 要理解其原因,我們必須回顧一下catch語句的用途。catch語句表示我們預期會出現某種異常,而且希望能夠處理該異常。異常類的作用就是告訴 Java編譯器我們想要處理的是哪一種異常。由于絕
37、大多數異常都直接或間接從java.lang.Exception派生,catch (Exception ex)就相當于說我們想要處理幾乎所有的異常。 再來看看前面的代碼例子。我們真正想要捕獲的異常是什么呢?最明顯的一個是SQLException,這是JDBC操作中常見的異常。另一個可能的異常是IOException,因為它要操作OutputStreamWriter。顯然,在同一個catch塊中處理這兩種截然不同的異常是不合適的。如果用兩個catch塊分別捕獲SQLException和IOException就要好多了。這就是說,catch語句應當盡量指定具體的異常類型,而不應該指定涵蓋范圍太廣的E
38、xception類。 另一方面,除了這兩個特定的異常,還有其他許多異常也可能出現。例如,如果由于某種原因,executeQuery返回了null,該怎么辦?答案是讓它們繼續拋出,即不必捕獲也不必處理。實際上,我們不能也不應該去捕獲可能出現的所有異常,程序的其他地方還有捕獲異常的機會?直至最后由JVM處理。 結論二:在catch語句中盡可能指定具體的異常類型,必要時使用多個catch。不要試圖處理所有可能出現的異常。 反例之三:占用資源不釋放 代碼:3行-14行。 異常改變了程序正常的執行流程。這個道理雖然簡單,卻常常被人們忽視。如果程序用到了文件、Socket、JDBC連接之類的資源,即使遇到
39、了異常,也要正確釋放占用的資源。為此,Java提供了一個簡化這類操作的關鍵詞finally。 finally是樣好東西:不管是否出現了異常,Finally保證在try/catch/finally塊結束之前,執行清理任務的代碼總是有機會執行。遺憾的是有些人卻不習慣使用finally。 當然,編寫finally塊應當多加小心,特別是要注意在finally塊之內拋出的異常?這是執行清理任務的最后機會,盡量不要再有難以處理的錯誤。 結論三:保證所有資源都被正確釋放。充分運用finally關鍵詞。反例之四:不說明異常的詳細信息 代碼:3行-18行。 仔細觀察這段代碼:如果循環內部出現了異常,會發生什么事
40、情?我們可以得到足夠的信息判斷循環內部出錯的原因嗎?不能。我們只能知道當前正在處理的類發生了某種錯誤,但卻不能獲得任何信息判斷導致當前錯誤的原因。 printStackTrace的堆棧跟蹤功能顯示出程序運行到當前類的執行流程,但只提供了一些最基本的信息,未能說明實際導致錯誤的原因,同時也不易解讀。 因此,在出現異常時,最好能夠提供一些文字信息,例如當前正在執行的類、方法和其他狀態信息,包括以一種更適合閱讀的方式整理和組織printStackTrace提供的信息。 結論四:在異常處理模塊中提供適量的錯誤原因信息,組織錯誤信息使其易于理解和閱讀。 反例之五:過于龐大的try塊 代碼:3行-14行。
41、 經常可以看到有人把大量的代碼放入單個try塊,實際上這不是好習慣。這種現象之所以常見,原因就在于有些人圖省事,不愿花時間分析一大塊代碼中哪幾行代碼會拋出異常、異常的具體類型是什么。把大量的語句裝入單個巨大的try塊就象是出門旅游時把所有日常用品塞入一個大箱子,雖然東西是帶上了,但要找出來可不容易。 一些新手常常把大量的代碼放入單個try塊,然后再在catch語句中聲明Exception,而不是分離各個可能出現異常的段落并分別捕獲其異常。這種做法為分析程序拋出異常的原因帶來了困難,因為一大段代碼中有太多的地方可能拋出Exception。 結論五:盡量減小try塊的體積。 反例之六:輸出數據不完
42、整 代碼:7行-11行。 不完整的數據是Java程序的隱形殺手。仔細觀察這段代碼,考慮一下如果循環的中間拋出了異常,會發生什么事情。循環的執行當然是要被打斷的,其次, catch塊會執行?就這些,再也沒有其他動作了。已經輸出的數據怎么辦?使用這些數據的人或設備將收到一份不完整的(因而也是錯誤的)數據,卻得不到任何有關這份數據是否完整的提示。對于有些系統來說,數據不完整可能比系統停止運行帶來更大的損失。 較為理想的處置辦法是向輸出設備寫一些信息,聲明數據的不完整性;另一種可能有效的辦法是,先緩沖要輸出的數據,準備好全部數據之后再一次性輸出。 結論六:全面考慮可能出現的異常以及這些異常對執行流程的
43、影響。 改寫后的代碼 根據上面的討論,下面給出改寫后的代碼。也許有人會說它稍微有點?嗦,但是它有了比較完備的異常處理機制。 OutputStreamWriter out = . java.sql.Connection conn = . try Statement stat = conn.createStatement(); ResultSet rs = stat.executeQuery( select uid, name from user); while (rs.next() out.println(ID: + rs.getString(uid) + ,姓名: + rs.getString
44、(name); catch(SQLException sqlex) out.println(警告:數據不完整); throw new ApplicationException(讀取數據時出現SQL錯誤, sqlex); catch(IOException ioex) throw new ApplicationException(寫入數據時出現IO錯誤, ioex); finally if (conn != null) try conn.close(); catch(SQLException sqlex2) System.err(this.getClass().getName() + .myme
45、thod - 不能關閉數據庫連接: + sqlex2.toString(); if (out != null) try out.close(); catch(IOException ioex2) System.err(this.getClass().getName() + .mymethod - 不能關閉輸出文件 + ioex2.toString(); 本文的結論不是放之四海皆準的教條,有時常識和經驗才是最好的老師。如果你對自己的做法沒有百分之百的信心,務必加上詳細、全面的注釋。 另一方面,不要笑話這些錯誤,不妨問問你自己是否真地徹底擺脫了這些壞習慣。即使最有經驗的程序員偶爾也會誤入歧途,原因
46、很簡單,因為它們確確實實帶來了“方便”。所有這些反例都可以看作Java編程世界的惡魔,它們美麗動人,無孔不入,時刻誘惑著你。也許有人會認為這些都屬于雞皮蒜毛的小事,不足掛齒,但請記住:勿以惡小而為之,勿以善小而不為。下面是一些 java異常集 算術異常類:ArithmeticExecption空指針異常類:NullPointerException類型強制轉換異常:ClassCastException數組負下標異常:NegativeArrayException數組下標越界異常:ArrayIndexOutOfBoundsException違背安全原則異常:SecturityException文件已
47、結束異常:EOFException文件未找到異常:FileNotFoundException字符串轉換為數字異常:NumberFormatException操作數據庫異常:SQLException輸入輸出異常:IOException方法未找到異常:NoSuchMethodExceptionjava.lang.AbstractMethodError抽象方法錯誤。當應用試圖調用抽象方法時拋出。java.lang.AssertionError斷言錯。用來指示一個斷言失敗的情況。java.lang.ClassCircularityError類循環依賴錯誤。在初始化一個類時,若檢測到類之間循環依賴則拋出
48、該異常。java.lang.ClassFormatError類格式錯誤。當Java虛擬機試圖從一個文件中讀取Java類,而檢測到該文件的內容不符合類的有效格式時拋出。java.lang.Error錯誤。是所有錯誤的基類,用于標識嚴重的程序運行問題。這些問題通常描述一些不應被應用程序捕獲的反常情況。java.lang.ExceptionInInitializerError初始化程序錯誤。當執行一個類的靜態初始化程序的過程中,發生了異常時拋出。靜態初始化程序是指直接包含于類中的static語句段。java.lang.IllegalAccessError違法訪問錯誤。當一個應用試圖訪問、修改某個類的
49、域(Field)或者調用其方法,但是又違反域或方法的可見性聲明,則拋出該異常。java.lang.IncompatibleClassChangeError不兼容的類變化錯誤。當正在執行的方法所依賴的類定義發生了不兼容的改變時,拋出該異常。一般在修改了應用中的某些類的聲明定義而沒有對整個應用重新編譯而直接運行的情況下,容易引發該錯誤。java.lang.InstantiationError實例化錯誤。當一個應用試圖通過Java的new操作符構造一個抽象類或者接口時拋出該異常.java.lang.InternalError內部錯誤。用于指示Java虛擬機發生了內部錯誤。java.lang.Link
50、ageError鏈接錯誤。該錯誤及其所有子類指示某個類依賴于另外一些類,在該類編譯之后,被依賴的類改變了其類定義而沒有重新編譯所有的類,進而引發錯誤的情況。java.lang.NoClassDefFoundError未找到類定義錯誤。當Java虛擬機或者類裝載器試圖實例化某個類,而找不到該類的定義時拋出該錯誤。java.lang.NoSuchFieldError域不存在錯誤。當應用試圖訪問或者修改某類的某個域,而該類的定義中沒有該域的定義時拋出該錯誤。java.lang.NoSuchMethodError方法不存在錯誤。當應用試圖調用某類的某個方法,而該類的定義中沒有該方法的定義時拋出該錯誤。
51、java.lang.OutOfMemoryError內存不足錯誤。當可用內存不足以讓Java虛擬機分配給一個對象時拋出該錯誤。java.lang.StackOverflowError堆棧溢出錯誤。當一個應用遞歸調用的層次太深而導致堆棧溢出時拋出該錯誤。java.lang.ThreadDeath線程結束。當調用Thread類的stop方法時拋出該錯誤,用于指示線程結束。java.lang.UnknownError未知錯誤。用于指示Java虛擬機發生了未知嚴重錯誤的情況。java.lang.UnsatisfiedLinkError未滿足的鏈接錯誤。當Java虛擬機未找到某個類的聲明為native方
52、法的本機語言定義時拋出。java.lang.UnsupportedClassVersionError不支持的類版本錯誤。當Java虛擬機試圖從讀取某個類文件,但是發現該文件的主、次版本號不被當前Java虛擬機支持的時候,拋出該錯誤。java.lang.VerifyError驗證錯誤。當驗證器檢測到某個類文件中存在內部不兼容或者安全問題時拋出該錯誤。java.lang.VirtualMachineError虛擬機錯誤。用于指示虛擬機被破壞或者繼續執行操作所需的資源不足的情況。java.lang.ArithmeticException算術條件異常。譬如:整數除零等。java.lang.ArrayI
53、ndexOutOfBoundsException數組索引越界異常。當對數組的索引值為負數或大于等于數組大小時拋出。java.lang.ArrayStoreException數組存儲異常。當向數組中存放非數組聲明類型對象時拋出。java.lang.ClassCastException類造型異常。假設有類A和B(A不是B的父類或子類),O是A的實例,那么當強制將O構造為類B的實例時拋出該異常。該異常經常被稱為強制類型轉換異常。java.lang.ClassNotFoundException找不到類異常。當應用試圖根據字符串形式的類名構造類,而在遍歷CLASSPAH之后找不到對應名稱的class文件
54、時,拋出該異常。java.lang.CloneNotSupportedException不支持克隆異常。當沒有實現Cloneable接口或者不支持克隆方法時,調用其clone()方法則拋出該異常。java.lang.EnumConstantNotPresentException枚舉常量不存在異常。當應用試圖通過名稱和枚舉類型訪問一個枚舉對象,但該枚舉對象并不包含常量時,拋出該異常。java.lang.Exception根異常。用以描述應用程序希望捕獲的情況。java.lang.IllegalAccessException違法的訪問異常。當應用試圖通過反射方式創建某個類的實例、訪問該類屬性、調用
55、該類方法,而當時又無法訪問類的、屬性的、方法的或構造方法的定義時拋出該異常。java.lang.IllegalMonitorStateException違法的監控狀態異常。當某個線程試圖等待一個自己并不擁有的對象(O)的監控器或者通知其他線程等待該對象(O)的監控器時,拋出該異常。java.lang.IllegalStateException違法的狀態異常。當在Java環境和應用尚未處于某個方法的合法調用狀態,而調用了該方法時,拋出該異常。java.lang.IllegalThreadStateException違法的線程狀態異常。當縣城尚未處于某個方法的合法調用狀態,而調用了該方法時,拋出異
56、常。java.lang.IndexOutOfBoundsException索引越界異常。當訪問某個序列的索引值小于0或大于等于序列大小時,拋出該異常。java.lang.InstantiationException實例化異常。當試圖通過newInstance()方法創建某個類的實例,而該類是一個抽象類或接口時,拋出該異常。java.lang.InterruptedException被中止異常。當某個線程處于長時間的等待、休眠或其他暫停狀態,而此時其他的線程通過Thread的interrupt方法終止該線程時拋出該異常。java.lang.NegativeArraySizeException數組
57、大小為負值異常。當使用負數大小值創建數組時拋出該異常。java.lang.NoSuchFieldException屬性不存在異常。當訪問某個類的不存在的屬性時拋出該異常。java.lang.NoSuchMethodException方法不存在異常。當訪問某個類的不存在的方法時拋出該異常。java.lang.NullPointerException空指針異常。當應用試圖在要求使用對象的地方使用了null時,拋出該異常。譬如:調用null對象的實例方法、訪問null對象的屬性、計算null對象的長度、使用throw語句拋出null等等。java.lang.NumberFormatException
58、數字格式異常。當試圖將一個String轉換為指定的數字類型,而該字符串確不滿足數字類型要求的格式時,拋出該異常。java.lang.RuntimeException運行時異常。是所有Java虛擬機正常操作期間可以被拋出的異常的父類。java.lang.SecurityException安全異常。由安全管理器拋出,用于指示違反安全情況的異常。java.lang.StringIndexOutOfBoundsException字符串索引越界異常。當使用索引值訪問某個字符串中的字符,而該索引值小于0或大于等于序列大小時,拋出該異常。java.lang.TypeNotPresentException類型
59、不存在異常。當應用試圖以某個類型名稱的字符串表達方式訪問該類型,但是根據給定的名稱又找不到該類型是拋出該異常。該異常與 ClassNotFoundException的區別在于該異常是unchecked(不被檢查)異常,而ClassNotFoundException 是checked(被檢查)異常。java.lang.UnsupportedOperationException不支持的方法異常。指明請求的方法不被支持情況的異常。異常javax.servlet.jsp.JspException: Cannot retrieve mapping for action /Login (/Login是你的
60、action名字) 可能原因action沒有再struts-config.xml 中定義,或沒有找到匹配的action,例如在JSP文件中使用 html:form action=Login.do.將表單提交給Login.do處理,如果出現上述異常,請查看struts-config.xml中的定義部分,有時可能是打錯了字符或者是某些不符合規則,可以使用strutsconsole工具來檢查。異常org.apache.jasper.JasperException: Cannot retrieve definition for form bean null可能原因 這個異常是因為Struts根據str
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年機電一體化專業考試試題及答案
- 2025年環境藝術設計專業答辯試卷及答案
- 2025年多元文化教育專業考試試卷及答案
- 物資采購供貨管理制度
- 特殊群體品牌管理制度
- 特殊設備安全管理制度
- 特色小鎮開發管理制度
- 特許經營合同管理制度
- 獵頭業務過程管理制度
- 豬場冬季物料管理制度
- 氣象行業天氣預報技能競賽理論試題庫資料(含答案)
- 校園環保之星事跡材料(7篇)
- 植物學基礎智慧樹知到期末考試答案章節答案2024年哈爾濱師范大學
- 建筑同層排水系統技術規程
- 六年級數學下冊 期末綜合模擬測試卷(冀教版)
- 紅星美凱龍調研課件
- 施工重要環境因素清單
- 以學生發展為中心的三三制本科人才培養體系構建與實施
- 《智能物聯網導論》AIoT導論-第1章課件
- 不動產測繪培訓課件
- 多處損傷的查房
評論
0/150
提交評論