MongoDB Java開發從Mongo讀取Object值轉Long異常引起的資料型別轉換異常
近期,在一個自動化運維平臺中,通過前臺頁面修改監控採數頻率,結果平臺監控不再重新整理,觀察後臺日誌,發現
一直刷資料型別轉換異常的錯誤。
開發語言:JAVA
JDK版本:java version "1.8.0_211"
MongoDB版本:3.2.16
後臺日誌報錯如下:
根據報錯提示的java類定位到具體的報錯程式碼如下:
由此,可知引起異常的程式碼是:
long intervalDynamic = conf.getLong("interval_dynamic");
觀察MongoDB內對應的資料:
到此,問題可能出在:程式在對mongodb資料庫裡的interval_dynamic從Object轉換成Long時出現資料型別轉換異常。
經溝通監控平臺的初始化是後臺指令碼初始化,mongdb初始化的時候是數字型別,監控取出的時候是bson,按key取值為
Object型別,不能直接強制轉換成Long,可能跟JDK版本有關。
經除錯,將資料轉換做如下調整,程式恢復正常執行:
總結:JAVA讀取MongoDB資料為二進位制的Bson,JAVA按欄位獲取到的資料為Object資料,在轉換為Long之前,先過
渡轉換為String型別,再使用Long.valueOf(String)方法將String資料轉換為Long型別。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29357786/viewspace-2707959/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java異常型別Java型別
- Cacheable 類轉換異常
- (十五)C++學習 | 強制型別轉換 異常處理C++型別
- C++ 常型別轉換C++型別
- DataIntegrityViolationException異常:java利用mymatis連線資料庫異常AIExceptionJava資料庫
- [轉載] Java異常處理習題Java
- spark讀取hdfs資料本地性異常Spark
- 【Java】資料型別轉換Java資料型別
- 從布林值到異常
- 異常-編譯期異常和執行期異常的區別編譯
- Java資料型別及型別轉換Java資料型別
- Java 異常(二) 自定義異常Java
- 2、java資料型別轉換Java資料型別
- OOM異常型別總結OOM型別
- springboot-devtools導致spring-cache 快取命中出現型別強轉異常?Spring Bootdev快取型別
- 【java】異常Java
- java 異常Java
- Java 異常Java
- Java異常Java
- 異常JavaJava
- 【轉】java中異常與try catch finally詳解Java
- 一次線上Redis類轉換異常排查引發的思考Redis
- Java資料型別的顯式轉換和隱式轉換Java資料型別
- jmu-Java-06異常-01-常見異常Java
- 獲取input框輸入值異常
- scala和java資料型別轉換Java資料型別
- Java資料型別自動轉換(++ ,+=)Java資料型別
- 資料型別,型別轉換資料型別
- Java 異常表與異常處理原理Java
- Java中Error和Exception的異同以及執行時異常(Runtime exception)與檢查型異常(checked exception)的區別JavaErrorException
- Java異常十一:使用throw丟擲異常物件;throw和throws的區別Java物件
- java中的異常Java
- Java 中的異常Java
- 【踩坑系列】使用long型別處理金額,科學計數法導致金額轉大寫異常型別
- 資料型別轉換資料型別
- Java 異常(一) 異常概述及其架構Java架構
- springboot接收Date型別資料異常與解決辦法Spring Boot型別
- 異常-代理-泛型泛型