鍦–璇█涓紝閿欒澶勭悊鏄紪紼嬬殑涓€涓噸瑕佹柟闈紝鍥犱負瀹冨府鍔╃▼搴忓憳璇嗗埆鍜屼慨澶嶅彲鑳藉鑷寸▼搴忓穿婧冩垨浜х敓涓嶆紜粨鏋滅殑闂銆侰璇█鎻愪緵浜嗗縐嶉敊璇鐞嗘満鍒訛紝鍏朵腑鍖呮嫭榪斿洖鍊兼鏌ャ€佸叏灞€閿欒鍙橀噺鍜岄敊璇鐞嗗嚱鏁扮瓑銆?/p>
澶у鏁癈鏍囧噯搴撳嚱鏁板湪鎵ц澶辮觸鏃朵細榪斿洖涓€涓壒瀹氱殑閿欒鍊箋€備緥濡傦紝璁稿娑夊強鏂囦歡鎿嶄綔鐨勫嚱鏁板湪澶辮觸鏃朵細榪斿洖EOF鎴朜ULL錛岃€屽叾浠栦竴浜涘嚱鏁板彲鑳借繑鍥炶礋鍊兼垨0鏉ヨ〃紺洪敊璇€?/p>
FILE *file=fopen("example.txt", "r");
if (file==NULL) {
perror("Error opening file");
exit(EXIT_FAILURE);
}
鍦ㄤ笂闈㈢殑渚嬪瓙涓紝fopen鍑芥暟鍦ㄦ棤娉曟墦寮€鏂囦歡鏃惰繑鍥濶ULL銆傞€氳繃媯€鏌ヨ繑鍥炲€兼槸鍚︿負NULL錛屽彲浠ョ‘瀹氭槸鍚﹀彂鐢熼敊璇紝騫朵嬌鐢╬error鍑芥暟鎵撳嵃閿欒娑堟伅銆?/p>
鍦–璇█涓紝errno鏄竴涓叏灞€鍙橀噺錛岀敱搴撳嚱鏁板湪鍙戠敓閿欒鏃惰緗負涓€涓敊璇唬鐮併€俥rrno鐨勫€煎彲浠ユ彁渚涘叧浜庨敊璇被鍨嬬殑鏇村淇℃伅銆?lt;errno.h>澶存枃浠跺畾涔変簡涓庡悇縐嶉敊璇浉鍏崇殑瀹忋€?/p>
#include <errno.h>
#include <stdlib.h>
#include <stdio.h>
int main() {
char *endptr;
errno=0; // 娓呴櫎閿欒鐮?
long val=strtol("123abc", &endptr, 10);
if (endptr=="123abc") {
printf("No digits were found\n");
} else if (errno==ERANGE) {
printf("The number is out of range\n");
} else if (*endptr !='\0') {
printf("Further characters after number: %s\n", endptr);
}
return 0;
}
鍦ㄨ繖涓緥瀛愪腑錛宻trtol鍑芥暟灝濊瘯灝嗗瓧絎︿覆杞崲涓洪暱鏁村瀷鏁般€傚鏋滆漿鎹㈣繃紼嬩腑鍙戠敓閿欒錛宔rrno浼氳璁劇疆涓轟竴涓敊璇唬鐮侊紝渚嬪ERANGE琛ㄧず鏁板€艱秴鍑鴻寖鍥淬€?/p>
C鏍囧噯搴撴彁渚涗簡鍑犱釜閿欒澶勭悊鐩稿叧鐨勫嚱鏁幫紝濡俻error鍜宻trerror銆?/p>
褰撳簱鍑芥暟鍙戠敓閿欒鏃訛紝perror鍑芥暟鍙互鐢ㄦ潵鎵撳嵃涓€涓弿榪版€х殑閿欒娑堟伅銆傚畠浼氭牴鎹叏灞€鍙橀噺errno鐨勫綋鍓嶅€兼潵閫夋嫨閫傚綋鐨勯敊璇弿榪般€?/p>
FILE *file=fopen("nonexistent.txt", "r");
if (file==NULL) {
perror("Error");
exit(EXIT_FAILURE);
}
濡傛灉fopen澶辮觸錛宲error灝嗘墦鍗伴敊璇秷鎭細"Error: No such file or directory"銆?/p>
strerror鍑芥暟榪斿洖涓€涓寚閽堬紝鎸囧悜涓€涓弿榪伴敊璇唬鐮佺殑瀛楃涓層€傝繖涓嚱鏁伴€氬父涓巈rrno涓€璧蜂嬌鐢ㄣ€?/p>
#include <errno.h>
#include <stdio.h>
#include <string.h>
int main() {
FILE *file=fopen("nonexistent.txt", "r");
if (file==NULL) {
printf("Error opening file: %s\n", strerror(errno));
}
fclose(file);
return 0;
}
鍦ㄨ繖涓緥瀛愪腑錛屽鏋滄墦寮€鏂囦歡澶辮觸錛宻trerror灝嗚繑鍥炰竴涓瓧絎︿覆錛屾弿榪頒簡鐢眅rrno鎸囧畾鐨勯敊璇€?/p>
鍦–璇█涓紝浣犺繕鍙互瀹氫箟鑷繁鐨勯敊璇鐞嗘満鍒訛紝渚嬪閫氳繃璁劇疆鍑芥暟榪斿洖鍊兼垨浣跨敤緇撴瀯浣撴潵浼犻€掗敊璇俊鎭€?/p>
#include <stdio.h>
typedef enum {
SUCCESS=0,
ERROR_OPEN_FILE,
ERROR_READ_FILE,
ERROR_UNKNOWN
} ErrorCode;
ErrorCode readFile(const char *filename) {
FILE *file=fopen(filename, "r");
if (file==NULL) {
return ERROR_OPEN_FILE;
}
int ch; // 鐢ㄤ簬瀛樺偍浠庢枃浠朵腑璇誨彇鐨勫瓧絎?
while ((ch=fgetc(file)) !=EOF) {
// 鍋囪鎴戜滑鍙槸綆€鍗曞湴璇誨彇鏂囦歡錛屼笉鍋氫換浣曞鐞?
// 濡傛灉闇€瑕侊紝鍙互鍦ㄨ繖閲屾坊鍔犻澶栫殑閿欒媯€鏌ラ€昏緫
}
// 媯€鏌ユ槸鍚︾敱浜庤鍙栭敊璇€岀粨鏉熷驚鐜?
if (ferror(file)) {
fclose(file);
return ERROR_READ_FILE;
}
fclose(file);
return SUCCESS;
}
int main() {
ErrorCode result=readFile("example.txt");
switch (result) {
case SUCCESS:
printf("File read successfully\n");
break;
case ERROR_OPEN_FILE:
printf("Failed to open file\n");
break;
case ERROR_READ_FILE:
printf("Failed to read file\n");
break;
default:
printf("An unknown error occurred\n");
}
return 0;
}
鍦ㄨ繖涓緥瀛愪腑錛屾垜浠畾涔変簡涓€涓狤rrorCode鏋氫婦綾誨瀷鏉ヨ〃紺哄彲鑳藉彂鐢熺殑閿欒銆俽eadFile鍑芥暟榪斿洖榪欎簺閿欒浠g爜涔嬩竴錛屼富鍑芥暟浣跨敤switch璇彞鏉ュ鐞嗕笉鍚岀殑閿欒鎯呭喌銆?/p>
C璇█鐨勯敊璇鐞嗘満鍒舵槸閫氳繃媯€鏌ュ嚱鏁拌繑鍥炲€箋€佷嬌鐢ㄥ叏灞€閿欒鍙橀噺errno浠ュ強璋冪敤閿欒澶勭悊鍑芥暟鏉ュ疄鐜扮殑銆傝繖浜涙満鍒跺府鍔╃▼搴忓憳緙栧啓鍋ュ.鐨勪唬鐮侊紝騫跺湪鍙戠敓閿欒鏃舵彁渚涙湁鐢ㄧ殑鍙嶉銆傝嚜瀹氫箟閿欒澶勭悊涔熸槸涓€縐嶅父瑙佺殑鍋氭硶錛屽彲浠ユ彁渚涙洿澶氱殑鐏墊椿鎬у拰鎺у埗銆傚湪緙栧啓C紼嬪簭鏃訛紝鍚堢悊鍦頒嬌鐢ㄨ繖浜涢敊璇鐞嗘満鍒舵槸闈炲父閲嶈鐨勩€?/p>
榪欑瘒鏂囩珷涓昏璁ㄨ浜嗗湪緙栫▼涓笉鍚岀殑緙栫▼璇█濡備綍澶勭悊閿欒銆?/p>
閿欒澶勭悊鏄紪紼嬬殑鍩烘湰鏂歸潰銆傞櫎闈炰綘鍙槸鍦ㄧ紪鍐欌€淗ello World鈥濓紝鍚﹀垯浣犻渶瑕佸湪浠g爜涓鐞嗛敊璇€傚湪榪欑瘒鏂囩珷涓紝鎴戝皢璁ㄨ涓€涓嬪悇縐嶇紪紼嬭璦€甯哥敤鐨勫嚑縐嶆柟娉曘€?/p>
榪欐槸鏈€鍙よ€佺殑絳栫暐涔嬩竴 - 濡傛灉涓€涓嚱鏁板彲鑳藉け璐ワ紝瀹冨彲浠ョ畝鍗曞湴榪斿洖涓€涓敊璇唬鐮?- 閫氬父鏄竴涓礋鏁幫紝鎴栬€?銆傝繖鍦?C 璇█涓潪甯稿父瑙侊紝渚嬪錛?/p>
FILE* fp=fopen("file.txt" , "w");
if (!fp) {
// some error occurred
}
榪欑鏂規硶闈炲父綆€鍗曪紝鏃犺鏄疄鐜拌繕鏄悊瑙i兘寰堝鏄撱€傚畠鎵ц璧鋒潵涔熼潪甯擱珮鏁堬紝鍥犱負瀹冨彧娑夊強鍒頒竴涓爣鍑嗙殑鍑芥暟璋冪敤錛屾湁涓€涓繑鍥炲€?- 涓嶉渶瑕佽繍琛屾椂鏀寔鎴栧垎閰嶃€傜劧鑰岋紝瀹冩湁涓€浜涚己鐐癸細
鍑芥暟鐨勪嬌鐢ㄨ€呭緢瀹規槗蹇樿澶勭悊閿欒銆備緥濡傦紝C 璇█涓殑 printf 鍙互澶辮觸錛屼絾鎴戞病鏈夌湅鍒板緢澶氱▼搴忔鏌ュ畠鐨勮繑鍥炰唬鐮侊紒
灝嗛敊璇紶鎾埌璋冪敤鏍堜笂鏄緢鐑︿漢鐨勶紝鐗瑰埆鏄鏋滀綘鐨勪唬鐮佸繀欏誨鐞嗗縐嶄笉鍚岀殑澶辮觸錛堟墦寮€涓€涓枃浠訛紝鍐欏叆瀹冿紝浠庡彟涓€涓枃浠惰鍙栤€︹€︼級
my_struct *success_result;
int error_code=my_function(&success_result);
if (!error_code) {
// can use success_result
}
Go 璇█浠ヨ繖縐嶆柟寮忓鐞嗛敊璇潪甯稿嚭鍚嶃€傜劧鑰岋紝鐢變簬 Go 鍏佽鍑芥暟榪斿洖澶氫釜鍊鹼紝榪欑妯″紡鍙樺緱鏇村姞浜烘€у寲 - 騫朵笖闈炲父甯歌錛?/p>
user, err=FindUser(username)
if err !=nil {
return err
}
Go 璇█鐨勮繖縐嶆ā寮忕畝鍗曘€佹湁鏁堬紝騫朵笖鍙互灝嗛敊璇紶鎾粰璋冪敤鑰呫€傚彟涓€鏂歸潰錛屾垜瑙夊緱瀹冪浉褰撻噸澶嶏紝鑰屼笖瀵瑰疄闄呯殑涓氬姟閫昏緫鏈夌偣鍒嗘暎娉ㄦ剰鍔涖€傛垜榪樻病鏈夊啓瓚沖鐨?Go 浠g爜鏉ョ煡閬撹繖縐嶅嵃璞℃槸鍚︿細闅忕潃鏃墮棿鐨勬帹縐繪秷澶憋紒
errno
錛夋潵瀹屾垚銆傝繖縐嶆柟寮忕殑浼樼偣鏄畝鍗曚笖鎵ц鏁堢巼楂橈紝浣嗙己鐐規槸鍙兘浼氬拷鐣ラ敊璇鐞嗭紝鎴栬€呭湪闇€瑕佷紶鎾敊璇椂鍙樺緱澶嶆潅銆?/section>fopen
鍑芥暟錛屽鏋滄墦寮€鏂囦歡澶辮觸錛屽畠浼氳繑鍥?
錛屽茍璁劇疆鍏ㄥ眬鍙橀噺 errno
銆備綘鍙互媯€鏌?fopen
鐨勮繑鍥炲€鹼紝濡傛灉瀹冩槸
錛岄偅涔堝氨鍙戠敓浜嗛敊璇€傜劧鍚庯紝浣犲彲浠ユ煡鐪?errno
鐨勫€鹼紝浠ヨ幏鍙栨洿澶氬叧浜庨敊璇殑淇℃伅銆?/section>FILE* fp=fopen("file.txt" , "w");
if (!fp) {
perror("Error opening file");
return 1;
}
鍦ㄨ繖涓緥瀛愪腑錛?code style='font-size: 14px;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;'>perror 鍑芥暟鐢ㄤ簬鎵撳嵃鎻忚堪閿欒鐨勬秷鎭€傚畠浼氭牴鎹?errno
鐨勫綋鍓嶅€肩敓鎴愪竴涓秷鎭€?/p>
瀵逛簬鑷畾涔夐敊璇紝浣犲彲浠ュ畾涔夎嚜宸辯殑閿欒浠g爜錛屽茍鍦ㄥ嚱鏁拌繑鍥炴椂榪斿洖榪欎簺浠g爜銆備緥濡傦細
#define MY_ERROR -1
int my_function() {
if (/* some error condition */) {
return MY_ERROR;
}
// Normal function logic here...
return 0;
}
int main() {
int result=my_function();
if (result==MY_ERROR) {
printf("An error occurred in my_function\n");
return 1;
}
// Normal program logic here...
return 0;
}
鍦ㄨ繖涓緥瀛愪腑錛?code style='font-size: 14px;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;'>my_function 鍦ㄩ敊璇彂鐢熸椂榪斿洖 MY_ERROR
銆傜劧鍚庯紝浣犲彲浠ユ鏌?my_function
鐨勮繑鍥炲€鹼紝濡傛灉瀹冩槸 MY_ERROR
錛岄偅涔堝氨鍙戠敓浜嗛敊璇€?/p>
user, err=FindUser(username)
if err !=nil {
return err
}
data, err=FetchDataForUser(user)
if err !=nil {
return err
}
result, err=ProcessData(data)
if err !=nil {
return err
}
榪欑閲嶅鐨勯敊璇鏌ュ拰澶勭悊浠g爜鍙兘浼氬垎鏁e紑鍙戣€呭瀹為檯涓氬姟閫昏緫鐨勬敞鎰忓姏銆傚湪涓婇潰鐨勪緥瀛愪腑錛屽疄闄呯殑涓氬姟閫昏緫鏄€滄壘鍒扮敤鎴鳳紝鑾峰彇鐢ㄦ埛鐨勬暟鎹紝澶勭悊鏁版嵁鈥濓紝浣嗚繖浜涢€昏緫琚敊璇鏌ュ拰澶勭悊浠g爜鎵€鎺╃洊銆?/p>
姝ゅ錛岃繖縐嶆ā寮忓彲鑳戒細浣夸唬鐮佺殑緇撴瀯鍙樺緱澶嶆潅銆傚鏋滀綘闇€瑕佸湪媯€鏌ラ敊璇悗鎵ц涓€浜涙竻鐞嗘搷浣滐紝浣犲彲鑳介渶瑕佷嬌鐢?defer 璇彞鎴栧叾浠栧鏉傜殑緇撴瀯銆?/p>
瀹冧滑鑷劧鍦板皢鈥滄甯歌礬寰勨€濆拰閿欒澶勭悊璺緞鍒嗗紑銆?/p>
瀹冧滑浼氳嚜鍔ㄩ€氳繃璋冪敤鏍堝啋娉°€?/p>
鐒惰€岋紝瀹冧滑涔熸湁涓€浜涚己鐐癸細瀹冧滑闇€瑕佷竴浜涚壒瀹氱殑榪愯鏃舵敮鎸侊紝騫朵笖閫氬父浼氫駭鐢熺浉褰撳ぇ鐨勬€ц兘寮€閿€銆傛洿閲嶈鐨勬槸錛屽畠浠湁涓€涓€滆繙-reaching鈥濈殑鏁堟灉 - 涓€涓紓甯稿彲鑳界敱涓€浜涗唬鐮佹姏鍑猴紝騫剁敱鍦ㄨ皟鐢ㄦ爤涓緢榪滅殑鍦版柟鐨勫紓甯稿鐞嗗櫒鎹曡幏錛岃繖浼氬獎鍝嶆竻鏅板害銆?/p>
姝ゅ錛屼粎浠呴€氳繃鏌ョ湅鍏剁鍚嶏紝灝變笉鏄庢樉鐭ラ亾涓€涓嚱鏁版槸鍚︿細鎶涘嚭浠諱綍寮傚父銆?/p>
C++ 璇曞浘閫氳繃寮曞叆 throws cause 鏉ヨВ鍐寵繖涓棶棰橈紝浣嗚繖涓柟娉曚嬌鐢ㄥ緱澶皯錛屼互鑷充簬鍦?C++17 涓寮冪敤錛屽茍鍦?C++20 涓縐婚櫎銆備粠閭f椂璧鳳紝瀹冭瘯鍥懼紩鍏oexcept錛屼絾鎴戣繕娌℃湁鍐欒凍澶熺殑鐜頒唬C++鏉ョ煡閬撳畠鏈夊嫻佽銆?/p>
Java 浠モ€滄鏌ュ紓甯糕€濓紙checked exceptions錛夌殑鏂瑰紡璇曞浘浣跨敤錛屽嵆浣犲繀欏誨0鏄庝負絳懼悕閮ㄥ垎鐨勫紓甯?- 浣嗚繖縐嶆柟娉曡璁や負鏄け璐ョ殑錛岀幇浠f鏋跺 Spring 鍙嬌鐢ㄢ€滆繍琛屾椂寮傚父鈥濓紝JVM 璇█濡?Kotlin 瀹屽叏鎽掑純浜嗚繖涓蹇點€傛渶鍚庯紝娌℃湁濂界殑鏂規硶鐭ラ亾涓€涓柟娉曡皟鐢ㄦ槸鍚︿細鎶涘嚭浠諱綍寮傚父錛屽洜姝や綘鏈€緇堜細鏈夌偣娣蜂貢銆?/p> 璇︾粏瑙h 涓庨敊璇唬鐮佺浉姣旓紝寮傚父鏈変竴浜涗紭鐐癸細 浣犱笉鑳藉繕璁板鐞嗛敊璇?/p> 濂界殑錛岃鎴戜滑鏉ヨ緇嗗垎鏋愪竴涓嬨€?/p> 瀹冧滑鑷劧鍦板皢鈥滄甯歌礬寰勨€濆拰閿欒澶勭悊璺緞鍒嗗紑 褰撲綘浣跨敤閿欒浠g爜鏃訛紝浣犵殑浠g爜鍙兘浼氬厖婊′簡媯€鏌ラ敊璇殑璇彞銆備緥濡傦紝鍦?C 璇█涓細 鍦ㄨ繖涓緥瀛愪腑錛屼綘闇€瑕佸湪姣忔璋冪敤鍙兘澶辮觸鐨勫嚱鏁板悗媯€鏌ラ敊璇€傝繖鍙兘浼氫嬌浣犵殑浠g爜鍙樺緱娣蜂貢錛岄毦浠ラ槄璇誨拰緇存姢銆?/p> 涓庢鐩稿弽錛屽紓甯稿厑璁鎬綘灝嗘甯哥殑涓氬姟閫昏緫鍜岄敊璇鐞嗛€昏緫鍒嗗紑銆備緥濡傦紝鍦?Java 涓細 鍦ㄨ繖涓緥瀛愪腑錛屼綘鐨勬甯鎬笟鍔¢€昏緫錛堝啓鍏ユ枃浠訛級鍜岄敊璇鐞嗛€昏緫錛坈atch 鍧楋級鏄垎寮€鐨勩€傝繖浣垮緱浠g爜鏇存槗浜庨槄璇誨拰緇存姢銆?/p> 瀹冧滑浼氳嚜鍔ㄩ€氳繃璋冪敤鏍堝啋娉?/strong> 褰撲綘浣跨敤閿欒浠g爜鏃訛紝浣犻渶瑕佸湪姣忎釜鍑芥暟涓鏌ラ敊璇紝騫跺喅瀹氬浣曞鐞嗗畠銆傚鏋滀綘鎯沖皢閿欒浼犳挱鍒拌皟鐢ㄦ爤錛屼綘闇€瑕佹樉寮忓湴榪斿洖閿欒浠g爜銆?/p> 浣嗘槸錛屽綋浣犱嬌鐢ㄥ紓甯告椂錛屽鏋滀綘涓嶅湪鍑芥暟涓崟鑾峰紓甯革紝瀹冧細鑷姩浼犳挱鍒拌皟鐢ㄦ爤銆傝繖浣垮緱閿欒澶勭悊鏇村姞綆€鍗曪紝鍥犱負浣犱笉闇€瑕佸湪姣忎釜鍑芥暟涓樉寮忓湴媯€鏌ュ拰浼犳挱閿欒銆?/p> 褰撲綘浣跨敤閿欒浠g爜鏃訛紝濡傛灉涓€涓嚱鏁拌皟鐢ㄤ簡鍙︿竴涓彲鑳藉け璐ョ殑鍑芥暟錛岄偅涔堜綘闇€瑕佸湪姣忎釜鍑芥暟涓鏌ラ敊璇紝騫跺喅瀹氬浣曞鐞嗗畠銆備緥濡傦紝鍦?C 璇█涓細 鍦ㄨ繖涓緥瀛愪腑錛?code style='font-size: 14px;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;'>do_something 鍑芥暟璋冪敤浜? 涓庢鐩稿弽錛屽綋浣犱嬌鐢ㄥ紓甯告椂錛屽鏋滀竴涓嚱鏁拌皟鐢ㄤ簡鍙︿竴涓彲鑳芥姏鍑哄紓甯哥殑鍑芥暟錛岄偅涔堜綘涓嶉渶瑕佸湪姣忎釜鍑芥暟涓崟鑾峰紓甯搞€傚鏋滀綘涓嶆崟鑾峰紓甯革紝瀹冧細鑷姩浼犳挱鍒拌皟鐢ㄦ爤銆備緥濡傦紝鍦?Java 涓細 鍦ㄨ繖涓緥瀛愪腑錛?code style='font-size: 14px;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;'>doSomething 鍑芥暟璋冪敤浜? 浣犱笉鑳藉繕璁板鐞嗛敊璇?/strong> 褰撲綘浣跨敤閿欒浠g爜鏃訛紝浣犲彲鑳戒細蹇樿媯€鏌ラ敊璇€備緥濡傦紝浣犲彲鑳戒細蹇樿媯€鏌?fopen 鐨勮繑鍥炲€箋€?/p> 浣嗘槸錛屽綋浣犱嬌鐢ㄥ紓甯告椂錛屽鏋滀綘涓嶆崟鑾峰紓甯革紝紼嬪簭浼氱粓姝€傝繖榪嬌浣犲鐞嗘墍鏈夌殑閿欒錛屼粠鑰岄伩鍏嶄簡鍙兘鐨勯敊璇拰涓嶇‘瀹氱殑琛屼負銆?/p> 褰撲綘浣跨敤閿欒浠g爜鏃訛紝浣犲彲鑳戒細蹇樿媯€鏌ラ敊璇€備緥濡傦紝鍦?C 璇█涓細 鍦ㄨ繖涓緥瀛愪腑錛屽鏋? 浣嗘槸錛屽綋浣犱嬌鐢ㄥ紓甯告椂錛屽鏋滀綘涓嶆崟鑾峰紓甯革紝紼嬪簭浼氱粓姝€傝繖榪嬌浣犲鐞嗘墍鏈夌殑閿欒銆備緥濡傦紝鍦?Java 涓細 鍦ㄨ繖涓緥瀛愪腑錛屽鏋?FILE* fp=fopen("file.txt" , "w");
if (!fp) {
// some error occurred
}try {
File file=new File("file.txt");
FileWriter writer=new FileWriter(file);
// ... write to the file ...
} catch (IOException e) {
// handle the error
}int do_something() {
FILE* fp=fopen("file.txt" , "w");
if (!fp) {
return -1; // error code
}
// do something with the file
return 0; // success code
}
int main() {
int result=do_something();
if (result !=0) {
// handle the error
}
// continue with the program
return 0;
}fopen
錛屽茍涓斿繀欏繪鏌?fopen
鏄惁鎴愬姛銆傚鏋?fopen
澶辮觸錛?code style='font-size: 14px;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;'>do_something 蹇呴』榪斿洖涓€涓敊璇唬鐮侊紝鐒跺悗 main
鍑芥暟蹇呴』媯€鏌ヨ繖涓敊璇唬鐮併€?/p>void doSomething() throws IOException {
File file=new File("file.txt");
FileWriter writer=new FileWriter(file);
// do something with the file
}
public static void main(String[] args) {
try {
doSomething();
} catch (IOException e) {
// handle the error
}
// continue with the program
}FileWriter
鏋勯€犲嚱鏁幫紝榪欏彲鑳戒細鎶涘嚭 IOException
銆備絾鏄紝doSomething
涓嶉渶瑕佹崟鑾瘋繖涓紓甯搞€傚鏋?FileWriter
鏋勯€犲嚱鏁版姏鍑轟竴涓紓甯革紝閭d箞榪欎釜寮傚父浼氳嚜鍔ㄤ紶鎾埌 main
鍑芥暟錛?code style='font-size: 14px;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;'>main 鍑芥暟鍙互閫夋嫨鎹曡幏騫跺鐞嗚繖涓紓甯搞€?/p>int main() {
FILE* fp=fopen("file.txt" , "w");
// forgot to check if fp is
// do something with the file
return 0;
}fopen
澶辮觸錛岄偅涔?fp
灝嗘槸 錛屽茍涓斿悗緇殑鏂囦歡鎿嶄綔鍙兘浼氬鑷寸▼搴忓穿婧冦€傜劧鑰岋紝鐢變簬蹇樿媯€鏌?
fp
鏄惁涓?錛岃繖涓敊璇彲鑳戒細琚拷瑙嗐€?/p>
void doSomething() throws IOException {
File file=new File("file.txt");
FileWriter writer=new FileWriter(file);
// do something with the file
}
public static void main(String[] args) {
doSomething(); // forgot to catch the IOException
// continue with the program
}doSomething
鍑芥暟鎶涘嚭涓€涓?IOException
錛岄偅涔堣繖涓紓甯鎬細鑷姩浼犳挱鍒?main
鍑芥暟銆傜敱浜?main
鍑芥暟娌℃湁鎹曡幏榪欎釜寮傚父錛岀▼搴忎細緇堟錛岃繖榪嬌浣犲鐞嗘墍鏈夊彲鑳界殑閿欒銆?/p>
try-catch
鍧楁垨鑰?throws
鍏抽敭瀛楋級鐨勫紓甯搞€傝繖縐嶈璁$殑鍒濊》鏄己鍒剁▼搴忓憳澶勭悊鍙兘鍑虹幇鐨勯敊璇儏鍐點€傜劧鑰岋紝榪欑鏈哄埗鍦ㄥ疄璺典腑寰€寰€瀵艱嚧浠g爜榪囦簬澶嶆潅錛屽茍涓斿厖婊′簡澶ч噺鐨勭┖寮傚父澶勭悊浠g爜錛屽洜涓虹▼搴忓憳浠線寰€鍙槸綆€鍗曞湴鍦?catch
鍧椾腑鎵撳嵃寮傚父錛岃€屾病鏈夎繘琛屼換浣曞疄璐ㄦ€х殑閿欒澶勭悊銆?/section>public void readFile() throws IOException {
// This method may throw an IOException
// ...
}
璋冪敤榪欎釜鏂規硶鐨勪唬鐮佸繀欏誨鐞嗗彲鑳芥姏鍑虹殑 IOException
錛?/p>
try {
readFile();
} catch (IOException e) {
// Handle the exception
}
鐒惰€岋紝榪欑鏈哄埗鍦ㄥ疄璺典腑寰€寰€瀵艱嚧浠g爜榪囦簬澶嶆潅錛屽茍涓斿厖婊′簡澶ч噺鐨勭┖寮傚父澶勭悊浠g爜錛屽洜涓虹▼搴忓憳浠線寰€鍙槸綆€鍗曞湴鍦?catch
鍧椾腑鎵撳嵃寮傚父錛岃€屾病鏈夎繘琛屼換浣曞疄璐ㄦ€х殑閿欒澶勭悊銆?/p>
鍥犳錛岀幇浠g殑妗嗘灦錛堝 Spring錛夊拰 JVM 璇█錛堝 Kotlin錛夐€氬父鍙嬌鐢ㄨ繍琛屾椂寮傚父銆傝繖鏍鳳紝紼嬪簭鍛樺彲浠ラ€夋嫨鍦ㄥ摢閲屽鐞嗗紓甯革紝鑰屼笉鏄寮哄埗鍦ㄦ瘡涓彲鑳芥姏鍑烘鏌ュ紓甯哥殑鏂規硶涓鐞嗗紓甯搞€?/p>
榪愯鏃跺紓甯告槸閭d簺涓嶉渶瑕佸湪鏂規硶絳懼悕涓0鏄庢垨鑰呭湪鏂規硶浣撲腑鎹曡幏鐨勫紓甯搞€傝繖浜涘紓甯擱€氬父琛ㄧず緙栫▼閿欒錛屽絀烘寚閽堝紓甯革紙PointerException錛夋垨鏁扮粍瓚婄晫寮傚父錛圓rrayIndexOutOfBoundsException錛夈€?/p>
渚嬪錛屼互涓嬫槸涓€涓?Spring 鏂規硶錛屽畠鍙兘浼氭姏鍑轟竴涓繍琛屾椂寮傚父錛?/p>
public void saveUser(User user) {
// This method may throw a RuntimeException
// ...
}
璋冪敤榪欎釜鏂規硶鐨勪唬鐮佸彲浠ラ€夋嫨鏄惁澶勭悊鍙兘鎶涘嚭鐨勮繍琛屾椂寮傚父錛?/p>
// Option 1: Don't handle the exception
saveUser(user);
// Option 2: Handle the exception
try {
saveUser(user);
} catch (RuntimeException e) {
// Handle the exception
}
鍦?Kotlin 涓紝鎵€鏈夌殑寮傚父閮芥槸榪愯鏃跺紓甯革紝鍥犳浣犲彲浠ラ€夋嫨鍦ㄥ摢閲屽鐞嗗紓甯革紝鑰屼笉鏄寮哄埗鍦ㄦ瘡涓彲鑳芥姏鍑哄紓甯哥殑鏂規硶涓鐞嗗紓甯搞€備緥濡傦細
fun saveUser(user: User) {
// This function may throw a RuntimeException
// ...
}
// Call the function
try {
saveUser(user)
} catch (e: RuntimeException) {
// Handle the exception
}
const fs=require('fs');
fs.readFile('some_file.txt', (err, result)=> {
if (err) {
console.error(err);
return;
}
console.log(result);
});
鐒惰€岋紝榪欑鏂規硶閫氬父浼氬鑷存墍璋撶殑鈥滃洖璋冨湴鐙扁€濋棶棰橈紝鍥犱負涓€涓洖璋冨彲鑳介渶瑕佽皟鐢ㄦ洿澶氱殑寮傛 I/O錛岃繖鍙堥渶瑕佹洿澶氱殑鍥炶皟錛岀瓑絳夛紝鏈€緇堝鑷翠唬鐮佹販涔變笖闅句互璺熻釜銆?/p>
JavaScript 鐨勭幇浠g増鏈瘯鍥鵑€氳繃寮曞叆 promises 鏉ヤ嬌浠g爜鏇存槗璇伙細
fetch("https://example.com/profile", {
method: "POST", // or 'PUT'
})
.then(response=> response.json())
.then(data=> data['some_key'])
.catch(error=> console.error("Error:", error));
promises 妯″紡鐨勬渶鍚庝竴姝ユ槸 JavaScript 閲囩敤浜嗙敱 C# 鏅強鐨?async/await 妯″紡錛岃繖浣垮緱寮傛 I/O 鏈€緇堢湅璧鋒潵寰堝儚鍚屾浠g爜錛屽甫鏈夌粡鍏哥殑寮傚父錛?/p>
async function fetchData() {
try {
const response=await fetch("my-url");
if (!response.ok) {
throw new Error("Network response was not OK");
}
return response.json()['some_property'];
} catch (error) {
console.error("There has been a problem with your fetch operation:", error);
}
}
浣跨敤鍥炶皟榪涜閿欒澶勭悊鏄竴涓噸瑕佺殑妯″紡錛屼笉浠呭湪 JavaScript 涓?- 渚嬪錛屼漢浠湪 C 璇█涓嬌鐢ㄥ畠宸茬粡鏈夊緢闀挎椂闂翠簡銆傜劧鑰岋紝瀹冪幇鍦ㄥ茍涓嶅父瑙?- 浣犲彲鑳戒細浣跨敤涓€浜涘艦寮忕殑 async/await銆?/p> 璇︾粏瑙h JavaScript 涓‘瀹炴湁寮傚父錛圗xception錛夌殑姒傚康銆傚綋鍦ㄤ唬鐮佷腑鍙戠敓閿欒鏃訛紝JavaScript 浼氬仠姝㈡墽琛岋紝騫舵姏鍑轟竴涓紓甯搞€傚鏋滆繖涓紓甯告病鏈夎鎹曡幏鍜屽鐞嗭紝閭d箞紼嬪簭灝變細涓柇銆?/p> 鍦?JavaScript 涓紝浣犲彲浠ヤ嬌鐢? 浠ヤ笅鏄浣曞湪 JavaScript 涓垱寤哄拰鎶涘嚭鑷畾涔夊紓甯哥殑紺轟緥錛?/p> 璇︾粏瑙h 鍦ㄥ紓姝ョ紪紼嬩腑錛岄敊璇鐞嗙‘瀹炰笌鍚屾緙栫▼鏈夋墍涓嶅悓銆傝繖鏄洜涓哄湪寮傛鎿嶄綔涓紝褰撻敊璇彂鐢熸椂錛屽師濮嬬殑鎵ц涓婁笅鏂囧彲鑳藉凡緇忔秷澶變簡錛屽洜姝や笉鑳界畝鍗曞湴鍦ㄥ悓涓€涓皟鐢ㄦ爤涓悜涓婃姏鍑洪敊璇€傚洜姝わ紝鎴戜滑闇€瑕佷竴浜涚壒孌婄殑鏈哄埗鏉ュ鐞嗗紓姝ラ敊璇€?/p> 浠ヤ笅鏄竴浜涗笉鍚岃璦€涓紓姝ラ敊璇鐞嗙殑渚嬪瓙錛?/p> JavaScript錛氬湪 JavaScript 涓紝寮傛閿欒閫氬父閫氳繃鍥炶皟鍑芥暟銆丳romise 鎴?async/await 鏉ュ鐞嗐€?/p> Java錛氬湪 Java 涓紝Future 鍜?CompletableFuture 鎻愪緵浜嗗鐞嗗紓姝ラ敊璇殑鏈哄埗銆?/p> C#錛氬湪 C# 涓紝鍙互浣跨敤 async/await 鍜?try/catch 鏉ュ鐞嗗紓姝ラ敊璇€?/p> Go錛氬湪 Go 涓紝閿欒浣滀負鍑芥暟鐨勮繑鍥炲€煎鐞嗭紝榪欎篃閫傜敤浜庡紓姝ユ搷浣溿€?/p> Rust錛氬湪 Rust 涓紝鍙互浣跨敤 Result 鎴?Option 綾誨瀷鏉ュ鐞嗛敊璇紝鍖呮嫭寮傛閿欒銆?/p> 鍦ㄤ笂榪版墍鏈変緥瀛愪腑錛屼綘鍙互鐪嬪埌寮傛閿欒澶勭悊鐨勪竴涓叡鍚屼富棰橈細閿欒涓嶆槸閫氳繃璋冪敤鏍堝悜涓婃姏鍑猴紝鑰屾槸閫氳繃鏌愮褰㈠紡鐨勯敊璇鐞嗘満鍒訛紙濡傚洖璋冨嚱鏁般€丳romise銆丗uture 鎴?Result錛夋樉寮忓湴浼犻€掑拰澶勭悊銆?/p> 璇︾粏瑙h 鎬葷殑鏉ヨ錛屽紓姝ラ敊璇鐞嗙殑宸ヤ綔鍘熺悊鏄細褰撲竴涓紓姝ユ搷浣滃け璐ユ椂錛屽畠浼氬垱寤轟竴涓寘鍚敊璇俊鎭殑閿欒瀵硅薄錛屽茍灝嗚繖涓敊璇璞′紶閫掔粰涓€涓敊璇鐞嗗櫒錛岃繖涓敊璇鐞嗗櫒浼氭牴鎹繖涓敊璇璞℃潵鎵ц鐩稿簲鐨勯敊璇鐞嗛€昏緫銆傝繖涓繃紼嬪彲鑳戒細娑夊強鍒拌法綰跨▼鎴栬法鏈哄櫒鐨勯€氫俊錛屽彇鍐充簬寮傛鎿嶄綔鍜岄敊璇鐞嗗櫒鐨勫叿浣撹繍琛岀幆澧冦€?/p> 榪欑妯″紡闈炲父甯歌錛屼互鑷充簬 Rust 鍦ㄨ璦€涓紩鍏ヤ簡涓€涓暣涓搷浣滅錛堥棶鍙??錛夋潵綆€鍖栦笂闈㈢殑浠g爜錛?/p> 璇︾粏瑙h 浠ヤ笂閮芥槸璁捐璇█鏃剁殑鏉冭 銆傝嚜鍔ㄧ殑寮傚父鍐掓場鍦ㄦ煇浜涙儏鍐典笅鍙兘鏇存湁鐢紝渚嬪鍦?Java 涓紝浣嗗湪 Go 鍜?Rust 榪欐牱鐨勮璦€涓紝鏄懼紡鐨勯敊璇鐞嗚璁や負鏄洿濂界殑閫夋嫨銆?/p> 鐩告瘮涔嬩笅錛屽鏋滀竴涓璦€閫夋嫨浜嗘樉寮忕殑閿欒澶勭悊妯″紡錛屼緥濡?Go 鍜?Rust錛岄偅涔堥敊璇氨鏄櫘閫氱殑鍊鹼紝澶勭悊閿欒涓嶉渶瑕侀澶栫殑榪愯鏃舵敮鎸侊紝涔熶笉浼氬紩鍏ラ澶栫殑鎬ц兘寮€閿€銆?/p> 璇︾粏瑙h Rust 鍜?Go 鐨勯敊璇鐞嗘ā寮忛兘寮鴻皟鏄懼紡閿欒澶勭悊錛屼絾浠栦滑鐨勫鐞嗘柟寮忔湁鎵€涓嶅悓銆?/p> Rust 鐨勯敊璇鐞嗘ā寮忥細 Rust 浣跨敤 浼樼偣錛?/p> 浣跨敤 浠ヤ笅鏄竴涓嬌鐢? 緙轟箯鍐呯疆鐨勯敊璇紶鎾満鍒訛紝濡?Rust 涓殑 WWH 緋誨垪鏂囩珷鍒楄〃錛?/span> [1] Why - 涓轟粈涔?JS 鏇村儚涓€闂ㄧ紪璇戝瀷璇█錛?/span> [2] What - 浠€涔堟槸渚濊禆娉ㄥ叆錛?/span> [3] What - 浠€涔堟槸 Big O錛?/span> [4] How - 涓嶅悓鐨勮璦€閮藉浣曞鐞嗛敊璇紵 [5] How - 闈㈠悜瀵硅薄璇█濡備綍澶勭悊寮傚父錛?/span> ChatGPT 鏂囩珷鍒楄〃錛?/span> [1] 绔欏湪 ChatGPT 鐨勮偐涓婄紪紼?/span> [2] ChatGPT 鍦ㄥ仛浠€涔堬紵瀹冧負浠€涔堟湁鏁堬紵 [3] 浣犵煡閬?ChatGPT 姣忕敓鎴愪竴涓瓧闇€瑕佽綆楀灝戞鍚楋紵 [4] ChatGPT 鍚ず錛孶I 鐨勬湭鏉ユ槸浠€涔堬紵 [5] ChatGPT 鍚ず錛屽浣曟敼鍙樻垜浠殑鎼滅儲涔犳儻錛?/span> [6] ChatGPT 鐨勫績鏅鴻兘鍔?/span> [7] ChatGPT 鐨勮垂綾蟲倴璁鴻兘鍔?/span> 鏈€榪戞枃绔犲垪琛細 [1] 浠€涔堟槸鏁版嵁鍖栧喅絳栵紵 [2] 綰康闄堣櫥 [3] 璁$畻鏈鴻癁鐢熶箣鍓嶏紝鏁版嵁濡備綍鎺掑簭錛?/span> [4] 浜虹敓鏈夋病鏈夋剰涔夛紵浜虹被鍙堟湁浠€涔堟剰涔夛紵 [5] 絎竴鎬у師鐞?/span> [6] 浠€涔堟槸濂藉蹇冿紵 [7] 闇€瑕佸灝戝唴瀛樻潵榪愯100涓囦釜騫跺彂浠誨姟錛?/span> [8] 鍦?C 璇█涓疄鐜扮畝鍗曠殑鍝堝笇琛?/span> [9] 鎴愬氨鍗撹秺錛氫簨涓氭垚鍔熺殑鏍稿績瑕佺礌 [10] PPT 鍙戝睍綆€鍙?/span>throw
璇彞鏉ユ姏鍑轟竴涓紓甯搞€備綘鍙互鎶涘嚭涓€涓瓧絎︿覆銆佹暟瀛椼€佸竷灝斿€兼垨瀵硅薄銆傞€氬父錛屾垜浠細鎶涘嚭涓€涓?Error 瀵硅薄鎴?Error 瀵硅薄鐨勫瓙綾匯€侲rror 瀵硅薄鏈変竴涓?message
灞炴€э紝鐢ㄤ簬瀛樺偍鍏充簬閿欒鐨勬枃鏈俊鎭€?/p>// 鍒涘緩涓€涓嚜瀹氫箟鐨?Error 瀛愮被
class MyCustomError extends Error {
constructor(message) {
super(message); // 璋冪敤鐖剁被鐨?constructor 鏂規硶
this.name='MyCustomError'; // 璁劇疆閿欒鐨勫悕縐?/span>
}
}
// 鎶涘嚭鑷畾涔夊紓甯?/span>
throw new MyCustomError('This is a custom error');MyCustomError
鐨勮嚜瀹氫箟閿欒綾伙紝瀹冪戶鎵胯嚜鍐呯疆鐨?Error
綾匯€傜劧鍚庯紝鎴戜滑浣跨敤 throw
璇彞鎶涘嚭浜嗕竴涓?MyCustomError
瀹炰緥銆?/section>try...catch
鍧椾腑鎹曡幏騫跺鐞嗚繖涓嚜瀹氫箟寮傚父錛?/section>try {
throw new MyCustomError('This is a custom error');
} catch (error) {
if (error instanceof MyCustomError) {
console.error('Caught a custom error:', error.message);
} else {
console.error('Caught a general error:', error.message);
}
}MyCustomError
瀹炰緥銆傜劧鍚庯紝鎴戜滑鍦?catch
鍧椾腑鎹曡幏榪欎釜寮傚父錛屽茍媯€鏌ュ畠鏄惁鏄?MyCustomError
綾誨瀷鐨勫疄渚嬨€傚鏋滄槸錛屾垜浠墦鍗頒竴鏉$壒瀹氱殑閿欒娑堟伅錛涘鏋滀笉鏄紝鎴戜滑鎵撳嵃涓€鏉¢€氱敤鐨勯敊璇秷鎭€?/section> fs.readFile('file.txt', function(err, data) {
if (err) {
console.error('Error reading file:', err);
} else {
console.log('File contents:', data);
}
});catch
鏂規硶澶勭悊銆?/section> fetch('https://example.com')
.then(response=> response.json())
.catch(error=> console.error('Error:', error)); async function fetchData() {
try {
const response=await fetch('https://example.com');
const data=await response.json();
} catch (error) {
console.error('Error:', error);
}
} CompletableFuture.supplyAsync(() -> {
// 寮傛鎿嶄綔
}).exceptionally(ex -> {
// 澶勭悊閿欒
return ;
}); public async Task DoSomethingAsync() {
try {
var result=await SomeAsyncOperation();
} catch (Exception ex) {
// 澶勭悊閿欒
}
} go func() {
if err :=doSomething(); err !=nil {
log.Fatal(err)
}
}() async fn do_something() -> Result<(), Box<dyn std::error::Error>> {
// 寮傛鎿嶄綔
Ok(())
}
let future=do_something();
executor::block_on(future);catch
鏂規硶銆佷竴涓?Future 鐨?exceptionally
鏂規硶錛岀瓑絳夈€傞敊璇鐞嗗櫒閫氬父浼氭帴鏀朵竴涓敊璇璞′綔涓哄弬鏁幫紝騫舵牴鎹繖涓敊璇璞℃潵鎵ц鐩稿簲鐨勯敊璇鐞嗛€昏緫銆?/section>catch
鏂規硶錛夛紝閭d箞瀹冨彲鑳戒細琚瓨鍌ㄥ湪榪欎釜瀵硅薄鐨勫唴瀛樼┖闂翠腑銆?/section>let result=match my_fallible_function() {
Err(e)=> return Err(e),
Ok(some_data)=> some_data,
};let result=my_fallible_function()?; // 娉ㄦ剰榪欓噷鐨?"?"
Result
綾誨瀷鏉ュ鐞嗗彲鑳藉嚭閿欑殑鍑芥暟銆?code style='font-size: 14px;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;'>Result 鏄竴涓灇涓撅紝鏈変袱涓彉浣擄細Ok
鍜?Err
銆傚鏋滃嚱鏁版墽琛屾垚鍔燂紝瀹冭繑鍥?Ok
鍙樹綋錛屽彲鑳藉甫鏈変竴浜涙暟鎹紱濡傛灉鍑芥暟鎵ц澶辮觸錛屽畠榪斿洖 Err
鍙樹綋錛屽甫鏈変竴浜涢敊璇粏鑺傘€?/p>fn divide(numerator: f64, denominator: f64) -> Result<f64, &'static str> {
if denominator==0.0 {
Err("Cannot divide by zero")
} else {
Ok(numerator / denominator)
}
}
let result=divide(5.0, 0.0);
match result {
Ok(value)=> println!("The result is {}", value),
Err(err)=> println!("Error: {}", err),
}?
鎿嶄綔絎﹀彲浠ョ畝鍖栭敊璇紶鎾€傚鏋?Result
鏄?Err
錛?code style='font-size: 14px;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;'>? 浼氱珛鍗充粠褰撳墠鍑芥暟榪斿洖閿欒銆?/p>?
鎿嶄綔絎︾殑 Rust 浠g爜紺轟緥錛?/p>fn divide(numerator: f64, denominator: f64) -> Result<f64, &'static str> {
if denominator==0.0 {
Err("Cannot divide by zero")
} else {
Ok(numerator / denominator)
}
}
fn print_division_result(numerator: f64, denominator: f64) -> Result<(), &'static str> {
let result=divide(numerator, denominator)?;
println!("The result is {}", result);
Ok(())
}
match print_division_result(5.0, 0.0) {
Ok(_)=> (),
Err(err)=> println!("Error: {}", err),
}divide
鍑芥暟錛屽茍浣跨敤 ?
鎿嶄綔絎﹀鐞嗕簡鍙兘鐨勯敊璇€傚鏋?divide
鍑芥暟榪斿洖涓€涓敊璇紝?
浼氱珛鍗崇粨鏉?print_division_result
鍑芥暟錛屽茍榪斿洖榪欎釜閿欒銆傚鏋?divide
鍑芥暟鎴愬姛錛?code style='font-size: 14px;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;'>? 浼氳繑鍥?Ok
涓殑鍊鹼紝鐒跺悗鎴戜滑鎵撳嵃榪欎釜緇撴灉銆?/section>print_division_result
鍑芥暟涓紝Ok(()) 鏄嚱鏁扮殑榪斿洖鍊箋€傝繖涓嚱鏁扮殑榪斿洖綾誨瀷鏄?Result<(), &'static str>錛岃繖鎰忓懗鐫€瀹冭涔堣繑鍥炰竴涓?Ok 鍊鹼紝瑕佷箞榪斿洖涓€涓?Err 鍊箋€?/section>?
鎿嶄綔絎︾殑鎯呭喌涓嬨€?/section>nil
錛涘鏋滃嚱鏁版墽琛屽け璐ワ紝緇撴灉灝嗕負闆跺€鹼紝閿欒灝嗗寘鍚敊璇鎯呫€?/section>func divide(numerator float64, denominator float64) (float64, error) {
if denominator==0.0 {
return 0, errors.New("Cannot divide by zero")
}
return numerator / denominator, nil
}
result, err :=divide(5.0, 0.0)
if err !=nil {
fmt.Println("Error:", err)
} else {
fmt.Println("The result is", result)
}?
鎿嶄綔絎︺€備綘闇€瑕佹樉寮忓湴媯€鏌ュ茍浼犳挱姣忎竴涓敊璇€?/p>