正常程式處理異常有兩種:1.將錯誤資訊return給前端
2.將錯誤資訊已異常形式拋給前端
return與throw的區別:當在service層處理業務邏輯的時候,所有的業務的**都寫在當前的service方法中的時候,那麼,使用return和throw用起來基本沒啥區別
當在service層處理的業務的時候,還需要呼叫自己封裝的方法的時候,那麼在封裝的方法中return出來的錯誤資訊則還需要經過自己來處理一遍,在返回給前端,這樣就增加了很多無用的操作,這時候用throw丟擲異常就會便捷很多
說明:通常乙個web程式在執行過程中,由於使用者的操作不當,或者程式的bug,有大量需要處理的異常。其中有些異常是需要暴露給使用者的,比如登陸超時,許可權不足等等。可以通過彈出提示資訊的方式告訴使用者出了什麼錯誤。
而這就表示在程式中需要乙個機制,去處理這些異常,將程式的異常轉換為使用者可讀的異常。而且最重要的,是要將這個機制統一,提供統一的異常處理。
實現:注:此統一異常只能攔截controller層的異常新增乙個統一異常處理類並且在類上面新增註解 @restcontrolleradvice
然後在類中新建方法,並在方法上面新增註解 @exceptionhandler(value = exception.class),該註解中的value屬性的值為何種異常,那麼就會攔截到這類異常
對於需要使用者自己捕獲處理的異常呢,則需要用自定義異常,對於無需關心的異常,則可以不用使用自定義異常1.在pom檔案中引入jar包自定義異常只需繼承異常類即可
org.springframework.boot<
/groupid>
spring-boot-starter-thymeleaf<
/artifactid>
<
/dependency>
2.在resources檔案中新增國際化資源檔案
3.在spingboot配置檔案中配置國際化:
#國際化配置
messages:
basename: i18n/messages #指定message的basename,多個以逗號分隔,如果不加包名的話,預設從classpath路徑開始,預設: messages
cache-seconds:
-1 #設定載入的資源檔案快取失效時間,-
1的話為永不過期,預設為-
1 encoding: utf-
8 defaultencoding: utf-
8 #當根據語言型別查詢不到資源時,讀取預設資源檔案,預設資源檔案格式設定
4.注入messagesource這個bean
5.呼叫messagesource中的getmessage方法:
messagesource.getmessage(msgname, null, locale)
說明:msgname為資源檔案中的資源id,locale為獲取哪種語言
另外,spring在國際化中還提供了佔位符功能,使用"",使用**:
messageformat format =
newmessageformat
(msg, locale.china)
; object[
] params =
; string message = format.
format
(params)
;
將要替換佔位符的字串用乙個數組裝起來,然後替換掉佔位符,陣列下標對應的就是佔位符的中括號裡的值
6.資源檔案格式
msg = 沒有這個使用者 這個是沒有佔位符的格式 msg代表後面值的id,後面的值就是要翻譯的值
msg = 沒有這個使用者 這個是有佔位符的格式 當你陣列裡有資料的時候,就會將佔位符給替換掉
軟體國際化值頁面國際化
國際化 軟體的國際化 軟體開發時,要使它能同時應對世界不同地區和國家的訪問,並針對不同地區和國家的訪問,提供相應的 符合來訪者閱讀習慣的頁面或資料。國際化又稱為 i18n internationalization 對於軟體中的選單欄 導航條 錯誤提示資訊,狀態資訊等這些固定不變的文字資訊,可以把它們...
外掛程式國際化
外掛程式國際化 在我們的應用中,難免會遇到國際化的問題,eclipse rcp給我們提供了很好的方案,甚至可以在後期批處理完成,但如果是其它外掛程式未提供我們需要的語言版呢?我們可以如何為它們提供語言包呢?乙個簡單的例子,你用messagedialog開啟對話方塊時,按鈕一般時 ok,cancel,...
資源國際化
properties 檔案裡的資源必須經過編碼,不能出現中問,日文等。且必須是ascii 碼。jdk 中bin 資料夾下的native2ascii.exe 可以把資源轉換為ascii 碼。在命令提示符中輸入 native2ascii encoding utf 8 sourcefile targetf...