91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于SpringBoot如何優(yōu)雅的全局異常處理

電子工程師 ? 來(lái)源:博客 ? 作者:虛無(wú)境 ? 2021-05-31 14:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

SpringBoot全局異常準(zhǔn)備說(shuō)明:如果想直接獲取工程那么可以直接跳到底部,通過(guò)鏈接下載工程代碼。

開發(fā)準(zhǔn)備

環(huán)境要求JDK:1.8SpringBoot:1.5.17.RELEASE

首先還是Maven的相關(guān)依賴:

《properties》

《project.build.sourceEncoding》UTF-8《/project.build.sourceEncoding》

java.version》1.8《/java.version》

《maven.compiler.source》1.8《/maven.compiler.source》

《maven.compiler.target》1.8《/maven.compiler.target》

《/properties》

《parent》

《groupId》org.springframework.boot《/groupId》

《artifactId》spring-boot-starter-parent《/artifactId》

《version》1.5.17.RELEASE《/version》

《relativePath /》

《/parent》

《dependencies》

《!-- Spring Boot Web 依賴 核心 --》

《dependency》

《groupId》org.springframework.boot《/groupId》

《artifactId》spring-boot-starter-web《/artifactId》

《/dependency》

《!-- Spring Boot Test 依賴 --》

《dependency》

《groupId》org.springframework.boot《/groupId》

《artifactId》spring-boot-starter-test《/artifactId》

《scope》test《/scope》

《/dependency》

《dependency》

《groupId》com.alibaba《/groupId》

《artifactId》fastjson《/artifactId》

《version》1.2.41《/version》

《/dependency》

《/dependencies》

配置文件這塊基本不需要更改,全局異常的處理只需在代碼中實(shí)現(xiàn)即可。

代碼編寫

SpringBoot的項(xiàng)目已經(jīng)對(duì)有一定的異常處理了,但是對(duì)于我們開發(fā)者而言可能就不太合適了,因此我們需要對(duì)這些異常進(jìn)行統(tǒng)一的捕獲并處理。SpringBoot中有一個(gè)ControllerAdvice的注解,使用該注解表示開啟了全局異常的捕獲,我們只需在自定義一個(gè)方法使用ExceptionHandler注解然后定義捕獲異常的類型即可對(duì)這些捕獲的異常進(jìn)行統(tǒng)一的處理。

我們根據(jù)下面的這個(gè)示例來(lái)看該注解是如何使用吧。

示例代碼:

@ControllerAdvice

public class MyExceptionHandler {

@ExceptionHandler(value =Exception.class)

public String exceptionHandler(Exception e){

System.out.println(“未知異常!原因是:”+e);

return e.getMessage();

}

}

上述的示例中,我們對(duì)捕獲的異常進(jìn)行簡(jiǎn)單的二次處理,返回異常的信息,雖然這種能夠讓我們知道異常的原因,但是在很多的情況下來(lái)說(shuō),可能還是不夠人性化,不符合我們的要求。那么我們這里可以通過(guò)自定義的異常類以及枚舉類來(lái)實(shí)現(xiàn)我們想要的那種數(shù)據(jù)吧。

自定義基礎(chǔ)接口

首先定義一個(gè)基礎(chǔ)的接口類,自定義的錯(cuò)誤描述枚舉類需實(shí)現(xiàn)該接口。代碼如下:

public interface BaseErrorInfoInterface {

/** 錯(cuò)誤碼*/

String getResultCode();

/** 錯(cuò)誤描述*/

String getResultMsg();

}

自定義枚舉類

然后我們這里在自定義一個(gè)枚舉類,并實(shí)現(xiàn)該接口。代碼如下:

public enum CommonEnum implements BaseErrorInfoInterface {

// 數(shù)據(jù)操作錯(cuò)誤定義

SUCCESS(“200”, “成功!”),

BODY_NOT_MATCH(“400”,“請(qǐng)求的數(shù)據(jù)格式不符!”),

SIGNATURE_NOT_MATCH(“401”,“請(qǐng)求的數(shù)字簽名不匹配!”),

NOT_FOUND(“404”, “未找到該資源!”),

INTERNAL_SERVER_ERROR(“500”, “服務(wù)器內(nèi)部錯(cuò)誤!”),

SERVER_BUSY(“503”,“服務(wù)器正忙,請(qǐng)稍后再試!”)

;

/** 錯(cuò)誤碼 */

private String resultCode;

/** 錯(cuò)誤描述 */

private String resultMsg;

CommonEnum(String resultCode, String resultMsg) {

this.resultCode = resultCode;

this.resultMsg = resultMsg;

}

@Override

public String getResultCode() {

return resultCode;

}

@Override

public String getResultMsg() {

return resultMsg;

}

}

自定義異常類

然后我們?cè)趤?lái)自定義一個(gè)異常類,用于處理我們發(fā)生的業(yè)務(wù)異常。代碼如下:

public class BizException extends RuntimeException {

private static final long serialVersionUID = 1L;

/**

* 錯(cuò)誤碼

*/

protected String errorCode;

/**

* 錯(cuò)誤信息

*/

protected String errorMsg;

public BizException() {

super();

}

public BizException(BaseErrorInfoInterface errorInfoInterface) {

super(errorInfoInterface.getResultCode());

this.errorCode = errorInfoInterface.getResultCode();

this.errorMsg = errorInfoInterface.getResultMsg();

}

public BizException(BaseErrorInfoInterface errorInfoInterface, Throwable cause) {

super(errorInfoInterface.getResultCode(), cause);

this.errorCode = errorInfoInterface.getResultCode();

this.errorMsg = errorInfoInterface.getResultMsg();

}

public BizException(String errorMsg) {

super(errorMsg);

this.errorMsg = errorMsg;

}

public BizException(String errorCode, String errorMsg) {

super(errorCode);

this.errorCode = errorCode;

this.errorMsg = errorMsg;

}

public BizException(String errorCode, String errorMsg, Throwable cause) {

super(errorCode, cause);

this.errorCode = errorCode;

this.errorMsg = errorMsg;

}

public String getErrorCode() {

return errorCode;

}

public void setErrorCode(String errorCode) {

this.errorCode = errorCode;

}

public String getErrorMsg() {

return errorMsg;

}

public void setErrorMsg(String errorMsg) {

this.errorMsg = errorMsg;

}

public String getMessage() {

return errorMsg;

}

@Override

public Throwable fillInStackTrace() {

return this;

}

}

自定義數(shù)據(jù)格式

順便這里我們定義一下數(shù)據(jù)的傳輸格式。代碼如下:

public class ResultBody {

/**

* 響應(yīng)代碼

*/

private String code;

/**

* 響應(yīng)消息

*/

private String message;

/**

* 響應(yīng)結(jié)果

*/

private Object result;

public ResultBody() {

}

public ResultBody(BaseErrorInfoInterface errorInfo) {

this.code = errorInfo.getResultCode();

this.message = errorInfo.getResultMsg();

}

public String getCode() {

return code;

}

public void setCode(String code) {

this.code = code;

}

public String getMessage() {

return message;

}

public void setMessage(String message) {

this.message = message;

}

public Object getResult() {

return result;

}

public void setResult(Object result) {

this.result = result;

}

/**

* 成功

*

* @return

*/

public static ResultBody success() {

return success(null);

}

/**

* 成功

* @param data

* @return

*/

public static ResultBody success(Object data) {

ResultBody rb = new ResultBody();

rb.setCode(CommonEnum.SUCCESS.getResultCode());

rb.setMessage(CommonEnum.SUCCESS.getResultMsg());

rb.setResult(data);

return rb;

}

/**

* 失敗

*/

public static ResultBody error(BaseErrorInfoInterface errorInfo) {

ResultBody rb = new ResultBody();

rb.setCode(errorInfo.getResultCode());

rb.setMessage(errorInfo.getResultMsg());

rb.setResult(null);

return rb;

}

/**

* 失敗

*/

public static ResultBody error(String code, String message) {

ResultBody rb = new ResultBody();

rb.setCode(code);

rb.setMessage(message);

rb.setResult(null);

return rb;

}

/**

* 失敗

*/

public static ResultBody error( String message) {

ResultBody rb = new ResultBody();

rb.setCode(“-1”);

rb.setMessage(message);

rb.setResult(null);

return rb;

}

@Override

public String toString() {

return JSONObject.toJSONString(this);

}

}

自定義全局異常處理類

最后我們?cè)趤?lái)編寫一個(gè)自定義全局異常處理的類。代碼如下:

@ControllerAdvice

public class GlobalExceptionHandler {

private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);

/**

* 處理自定義的業(yè)務(wù)異常

* @param req

* @param e

* @return

*/

@ExceptionHandler(value = BizException.class)

@ResponseBody

public ResultBody bizExceptionHandler(HttpServletRequest req, BizException e){

logger.error(“發(fā)生業(yè)務(wù)異常!原因是:{}”,e.getErrorMsg());

return ResultBody.error(e.getErrorCode(),e.getErrorMsg());

}

/**

* 處理空指針的異常

* @param req

* @param e

* @return

*/

@ExceptionHandler(value =NullPointerException.class)

@ResponseBody

public ResultBody exceptionHandler(HttpServletRequest req, NullPointerException e){

logger.error(“發(fā)生空指針異常!原因是:”,e);

return ResultBody.error(CommonEnum.BODY_NOT_MATCH);

}

/**

* 處理其他異常

* @param req

* @param e

* @return

*/

@ExceptionHandler(value =Exception.class)

@ResponseBody

public ResultBody exceptionHandler(HttpServletRequest req, Exception e){

logger.error(“未知異常!原因是:”,e);

return ResultBody.error(CommonEnum.INTERNAL_SERVER_ERROR);

}

}

因?yàn)檫@里我們只是用于做全局異常處理的功能實(shí)現(xiàn)以及測(cè)試,所以這里我們只需在添加一個(gè)實(shí)體類和一個(gè)控制層類即可。

實(shí)體類

又是萬(wàn)能的用戶表 (^▽^)

代碼如下:

public class User implements Serializable{

private static final long serialVersionUID = 1L;

/** 編號(hào) */

private int id;

/** 姓名 */

private String name;

/** 年齡 */

private int age;

public User(){

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String toString() {

return JSONObject.toJSONString(this);

}

}

Controller 控制層

控制層這邊也比較簡(jiǎn)單,使用Restful風(fēng)格實(shí)現(xiàn)的CRUD功能,不同的是這里我故意弄出了一些異常,好讓這些異常被捕獲到然后處理。這些異常中,有自定義的異常拋出,也有空指針的異常拋出,當(dāng)然也有不可預(yù)知的異常拋出(這里我用類型轉(zhuǎn)換異常代替),那么我們?cè)谕瓿纱a編寫之后,看看這些異常是否能夠被捕獲處理成功吧!

代碼如下:

@RestController

@RequestMapping(value = “/api”)

public class UserRestController {

@PostMapping(“/user”)

public boolean insert(@RequestBody User user) {

System.out.println(“開始新增。。。”);

//如果姓名為空就手動(dòng)拋出一個(gè)自定義的異常!

if(user.getName()==null){

throw new BizException(“-1”,“用戶姓名不能為空!”);

}

return true;

}

@PutMapping(“/user”)

public boolean update(@RequestBody User user) {

System.out.println(“開始更新。。。”);

//這里故意造成一個(gè)空指針的異常,并且不進(jìn)行處理

String str=null;

str.equals(“111”);

return true;

}

@DeleteMapping(“/user”)

public boolean delete(@RequestBody User user) {

System.out.println(“開始刪除。。?!保?

//這里故意造成一個(gè)異常,并且不進(jìn)行處理

Integer.parseInt(“abc123”);

return true;

}

@GetMapping(“/user”)

public List《User》 findByUser(User user) {

System.out.println(“開始查詢。。?!保?

List《User》 userList =new ArrayList《》();

User user2=new User();

user2.setId(1L);

user2.setName(“xuwujing”);

user2.setAge(18);

userList.add(user2);

return userList;

}

}

App 入口

和普通的SpringBoot項(xiàng)目基本一樣。

代碼如下:

@SpringBootApplication

public class App

{

public static void main( String[] args )

{

SpringApplication.run(App.class, args);

System.out.println(“程序正在運(yùn)行。。?!保?

}

}

功能測(cè)試

我們成功啟動(dòng)該程序之后,使用Postman工具來(lái)進(jìn)行接口測(cè)試。

首先進(jìn)行查詢,查看程序正常運(yùn)行是否ok,使用GET 方式進(jìn)行請(qǐng)求。

GET http://localhost:8181/api/user

”返回參數(shù)為:

{“id”:1,“name”:“xuwujing”,“age”:18}

”示例圖:

7922d7ee-c1d5-11eb-9e57-12bb97331649.png

可以看到程序正常返回,并沒有因自定義的全局異常而影響。

然后我們?cè)賮?lái)測(cè)試下自定義的異常是否能夠被正確的捕獲并處理。

使用POST方式進(jìn)行請(qǐng)求

POST http://localhost:8181/api/user

”Body參數(shù)為:

{“id”:1,“age”:18}

”返回參數(shù)為:

{“code”:“-1”,“message”:“用戶姓名不能為空!”,“result”:null}

”示例圖:

796e0dd6-c1d5-11eb-9e57-12bb97331649.png

可以看出將我們拋出的異常進(jìn)行數(shù)據(jù)封裝,然后將異常返回出來(lái)。

然后我們?cè)賮?lái)測(cè)試下空指針異常是否能夠被正確的捕獲并處理。在自定義全局異常中,我們除了定義空指針的異常處理,也定義最高級(jí)別之一的Exception異常,那么這里發(fā)生了空指針異常之后,它是回優(yōu)先使用哪一個(gè)呢?這里我們來(lái)測(cè)試下。

使用PUT方式進(jìn)行請(qǐng)求。

PUT http://localhost:8181/api/user

”Body參數(shù)為:

{“id”:1,“age”:18}

”返回參數(shù)為:

{“code”:“400”,“message”:“請(qǐng)求的數(shù)據(jù)格式不符!”,“result”:null}

”示例圖:

79859b90-c1d5-11eb-9e57-12bb97331649.png

我們可以看到這里的的確是返回空指針的異常護(hù)理,可以得出全局異常處理優(yōu)先處理子類的異常。

那么我們?cè)趤?lái)試試未指定其異常的處理,看該異常是否能夠被捕獲。

使用DELETE方式進(jìn)行請(qǐng)求。

DELETE http://localhost:8181/api/user

”Body參數(shù)為:

{“id”:1}

”返回參數(shù)為:

{“code”:“500”,“message”:“服務(wù)器內(nèi)部錯(cuò)誤!”,“result”:null}

這里可以看到它使用了我們?cè)谧远x全局異常處理類中的Exception異常處理的方法。到這里,測(cè)試就結(jié)束了。順便再說(shuō)一下,自義定全局異常處理除了可以處理上述的數(shù)據(jù)格式之外,也可以處理頁(yè)面的跳轉(zhuǎn),只需在新增的異常方法的返回處理上填寫該跳轉(zhuǎn)的路徑并不使用ResponseBody 注解即可。

細(xì)心的同學(xué)也許發(fā)現(xiàn)了在GlobalExceptionHandler類中使用的是ControllerAdvice注解,而非RestControllerAdvice注解,如果是用的RestControllerAdvice注解,它會(huì)將數(shù)據(jù)自動(dòng)轉(zhuǎn)換成JSON格式,這種于Controller和RestController類似,所以我們?cè)谑褂萌之惓L幚淼闹罂梢赃M(jìn)行靈活的選擇處理。

其它關(guān)于SpringBoot優(yōu)雅的全局異常處理的文章就講解到這里了,如有不妥,歡迎指正!

項(xiàng)目地址

SpringBoot全局異常的處理項(xiàng)目工程地址//github.com/xuwujing/springBoot-study/tree/master/springboot-exceptionHandler

編輯;jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4968

    瀏覽量

    73965
  • JDK
    JDK
    +關(guān)注

    關(guān)注

    0

    文章

    83

    瀏覽量

    17149
  • PUT
    PUT
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    6441
  • SpringBoot
    +關(guān)注

    關(guān)注

    0

    文章

    177

    瀏覽量

    688

原文標(biāo)題:看看人家SpringBoot的全局異常處理多么優(yōu)雅...

文章出處:【微信號(hào):AndroidPush,微信公眾號(hào):Android編程精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    深入剖析ARM64異常處理:開發(fā)者必須掌握的底層核心邏輯

    在ARM64架構(gòu)的開發(fā)領(lǐng)域,異常處理絕非單純的理論知識(shí)點(diǎn),而是直接決定系統(tǒng)穩(wěn)定性、調(diào)試效率和功能實(shí)現(xiàn)的關(guān)鍵技術(shù)。無(wú)論是嵌入式開發(fā)、Linux內(nèi)核移植,還是驅(qū)動(dòng)開發(fā)與芯片調(diào)試,理解異常發(fā)生后CPU
    的頭像 發(fā)表于 12-24 07:05 ?1106次閱讀
    深入剖析ARM64<b class='flag-5'>異常</b><b class='flag-5'>處理</b>:開發(fā)者必須掌握的底層核心邏輯

    使用setjmp及l(fā)ongjmp函數(shù)處理異常

    使用setjmp和longjmp函數(shù):這是一種用于實(shí)現(xiàn)非局部跳轉(zhuǎn)的方法,就是在程序中設(shè)置一個(gè)跳轉(zhuǎn)點(diǎn),并在某些情況下跳轉(zhuǎn)到該跳轉(zhuǎn)點(diǎn),從而繞過(guò)中間的一些代碼或函數(shù)。這樣可以在某些情況下模擬異常處理的效果
    發(fā)表于 12-11 08:00

    檢查函數(shù)返回值的錯(cuò)誤和異常處理方法

    檢查函數(shù)返回值:這是最常見也最基本的錯(cuò)誤處理異常處理方法,就是在調(diào)用一個(gè)函數(shù)后,檢查其返回值是否符合預(yù)期或是否表示出錯(cuò)或失敗。如果出錯(cuò)或失敗,則根據(jù)返回值或者全局變量errno(定義
    發(fā)表于 12-11 06:48

    請(qǐng)問C語(yǔ)言開發(fā)單片機(jī)為什么大多數(shù)都采用全局變量的形式?

    C語(yǔ)言代碼,大多數(shù)都是使用全局變量,也就是用很多函數(shù)來(lái)操作這些變量,比如函數(shù)1把一個(gè)全局變量經(jīng)過(guò)一系列復(fù)雜的算法計(jì)算后改變了這個(gè)全局變量的值,然后函數(shù)2再拿著函數(shù)1處理過(guò)的這個(gè)
    發(fā)表于 12-04 07:47

    C++程序異常處理機(jī)制

    1、什么是異常處理? 有經(jīng)驗(yàn)的朋友應(yīng)該知道,在正常的C和C++編程過(guò)程中難免會(huì)碰到程序不按照原本設(shè)計(jì)運(yùn)行的情況。 最常見的有除法分母為零,數(shù)組越界,內(nèi)存分配失效、打開相應(yīng)文件失敗等等。 一個(gè)程序
    發(fā)表于 12-02 07:12

    如何使用SpringBoot、Vue2.0、MySQL開發(fā)一套云診所系統(tǒng)?

    SpringBoot是Java領(lǐng)域非常流行的快速開發(fā)框架,提供了豐富的生態(tài)和自動(dòng)化配置,適合構(gòu)建微服務(wù)和單體應(yīng)用。 它可以很好地處理業(yè)務(wù)邏輯、數(shù)據(jù)持久化、安全性(Spring Security)和API接口
    的頭像 發(fā)表于 11-27 16:02 ?287次閱讀
    如何使用<b class='flag-5'>SpringBoot</b>、Vue2.0、MySQL開發(fā)一套云診所系統(tǒng)?

    線路保護(hù)光纖通道異常處理方法

    通道異常的 常見原因、處理步驟及預(yù)防措施 ,幫助運(yùn)維人員快速定位問題,提升故障處理效率。 廣州郵科光纖線路保護(hù)系統(tǒng) 一、光纖通道異常的常見表現(xiàn) 當(dāng)線路保護(hù)光纖通道出現(xiàn)
    的頭像 發(fā)表于 11-17 10:01 ?1110次閱讀
    線路保護(hù)光纖通道<b class='flag-5'>異常</b><b class='flag-5'>處理</b>方法

    醫(yī)院隨訪管理系統(tǒng)源碼,三級(jí)隨訪系統(tǒng)源碼,Java+Springboot,Vue,Ant-Design+MySQL5

    Java版隨訪系統(tǒng)源碼,醫(yī)院隨訪管理系統(tǒng)源碼,三級(jí)隨訪系統(tǒng)源碼,B/S前后端分離架構(gòu),自主版權(quán),落地案例。 技術(shù)框架:Java+Springboot,Vue,Ant-Design+MySQL5 開發(fā)
    的頭像 發(fā)表于 11-08 14:48 ?522次閱讀
    醫(yī)院隨訪管理系統(tǒng)源碼,三級(jí)隨訪系統(tǒng)源碼,Java+<b class='flag-5'>Springboot</b>,Vue,Ant-Design+MySQL5

    求助,關(guān)于全局中斷使能的問題求解

    各位朋友大家好,我最近在使用蜂鳥的板子進(jìn)行開發(fā)時(shí),遇到了這樣的問題:我的程序每次運(yùn)行到使能全局中斷的時(shí)候,就像進(jìn)入了死循環(huán)一樣,出不去了,如上圖,首先先打印“GI_EN begin!”這里是可以
    發(fā)表于 11-07 06:37

    如何處理電能質(zhì)量在線監(jiān)測(cè)裝置時(shí)鐘模塊自動(dòng)同步異常的情況?

    處理電能質(zhì)量在線監(jiān)測(cè)裝置時(shí)鐘模塊自動(dòng)同步異常,需遵循 “ 先定位異常類型→再分步驟排查(從軟到硬、從簡(jiǎn)到繁)→最后驗(yàn)證恢復(fù) ” 的邏輯,針對(duì) PTP、GPS、NTP 三種主流同步方式的差異,采取
    的頭像 發(fā)表于 10-27 10:16 ?969次閱讀

    如何利用AI算法進(jìn)行裝置數(shù)據(jù)的異常檢測(cè)?

    利用 AI 算法進(jìn)行裝置數(shù)據(jù)異常檢測(cè),需結(jié)合工業(yè)裝置的數(shù)據(jù)特性(如實(shí)時(shí)性、多源性、強(qiáng)時(shí)序性、噪聲干擾)和業(yè)務(wù)需求(如故障預(yù)警、安全合規(guī)、工藝優(yōu)化),通過(guò) “數(shù)據(jù)預(yù)處理 - 算法選型 - 模型部署
    的頭像 發(fā)表于 09-05 15:27 ?1860次閱讀
    如何利用AI算法進(jìn)行裝置數(shù)據(jù)的<b class='flag-5'>異常</b>檢測(cè)?

    碳化硅襯底 TTV 厚度測(cè)量數(shù)據(jù)異常的快速診斷與處理流程

    摘要 本文針對(duì)碳化硅襯底 TTV 厚度測(cè)量中出現(xiàn)的數(shù)據(jù)異常問題,系統(tǒng)分析異常類型與成因,構(gòu)建科學(xué)高效的快速診斷流程,并提出針對(duì)性處理方法,旨在提升數(shù)據(jù)異常
    的頭像 發(fā)表于 08-14 13:29 ?1208次閱讀
    碳化硅襯底 TTV 厚度測(cè)量數(shù)據(jù)<b class='flag-5'>異常</b>的快速診斷與<b class='flag-5'>處理</b>流程

    如何識(shí)別與處理振弦式鋼筋計(jì)異常數(shù)據(jù)?

    京峟思VWR型振弦式鋼筋計(jì)為例,解析異常數(shù)據(jù)的識(shí)別與處理方法,助您高效解決問題,同時(shí)展現(xiàn)其卓越性能!一、振弦式鋼筋計(jì)為何值得信賴?VWR型振弦式鋼筋計(jì)專為長(zhǎng)期埋設(shè)
    的頭像 發(fā)表于 04-22 17:05 ?647次閱讀
    如何識(shí)別與<b class='flag-5'>處理</b>振弦式鋼筋計(jì)<b class='flag-5'>異常</b>數(shù)據(jù)?

    推薦!如何優(yōu)雅地?cái)[好PCB絲印?

    很多畫PCB的人,會(huì)認(rèn)為絲印不影響電路的性能,所以,對(duì)絲印并不重視。但是,對(duì)于一個(gè)專業(yè)的硬件工程師來(lái)說(shuō),必須重視這些細(xì)節(jié)。 下面介紹如何優(yōu)雅地弄好PCB絲印。 1 擺放的位置 一般來(lái)說(shuō),電阻、電容
    發(fā)表于 04-08 14:59

    TJA1043的收發(fā)器,如果CAN總線出現(xiàn)異常,它會(huì)進(jìn)入異常狀態(tài)嗎?

    關(guān)于 TJA1043 的收發(fā)器,如果 CAN 總線出現(xiàn)異常,它會(huì)進(jìn)入異常狀態(tài)嗎?一旦處于異常狀態(tài),它的行為會(huì)如何?例如,可以發(fā)送數(shù)據(jù)包但無(wú)法接收,謝謝
    發(fā)表于 04-04 07:30