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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JN專案-型別轉換異常處理型別
- Cacheable 類轉換異常
- 強制型別轉換時的異常處理_java與c++比較型別JavaC++
- (十五)C++學習 | 強制型別轉換 異常處理C++型別
- 淺談java異常[Exception] (轉)JavaException
- (轉)pl/sql開發異常處理SQL
- spark讀取hdfs資料本地性異常Spark
- .Net異常釋出器的開發(2) (轉)
- ORACLE中的異常(轉)Oracle
- 異常處理 (轉)
- C++ 常型別轉換C++型別
- 異常-編譯期異常和執行期異常的區別編譯
- Java 異常(二) 自定義異常Java
- Java checked異常和unchecked異常。Java
- OOM異常型別總結OOM型別
- DataIntegrityViolationException異常:java利用mymatis連線資料庫異常AIExceptionJava資料庫
- [轉載] Java異常處理習題Java
- Java異常Java
- Java 異常Java
- 異常JavaJava
- 【java】異常Java
- java 異常Java
- 【Java】資料型別轉換Java資料型別
- 關於long型別的轉換型別
- Android異常分析(轉)Android
- 異常處理方法 (轉)
- 【轉】Oracle 異常處理Oracle
- Java資料型別及型別轉換Java資料型別
- jmu-Java-06異常-01-常見異常Java
- 獲取input框輸入值異常
- 【轉】java六種異常處理的陋習Java
- Oracle Long型別轉換為Clob型別Oracle型別
- [Java開發之路](5)異常詳解Java
- Java 異常表與異常處理原理Java
- 一次線上Redis類轉換異常排查引發的思考Redis
- Java異常處理之陋習展播 (轉)Java
- Java 中的異常Java
- java中的異常Java