C++/חריגות: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
מ קטגוריה
syntax hilighting
שורה 4:
 
לפני שנסביר מהן חריגות, נזכר בטיפול השגיאות ב C. נניח שאנו ממשים את הפונקציה sqrt המחזירה שורש של מספר. חתימת הפונקציה:
<source lang="cpp">
<div style="text-align:left; direction:ltr;"><pre>
double sqrt(double num);
</pre></divsource>
 
 
המספר שמועבר לפונקציה חייב להיות חיובי. ב C, כדי לטפל בהכנסת ערך לא חוקי, היינו צריכים לציין זאת באמצעות ערך חזרה מיוחד:
<source lang="cpp">
<div style="text-align:left; direction:ltr;"><pre>
 
double sqrt(double num){
if(num < 0.0) {
שורה 18 ⟵ 17:
// Do the rest of the root
)
</source>
 
</pre></div>
 
והקוד שמשתמש בפונקציה, היה נראה כך:
<source lang="cpp">
<div style="text-align:left; direction:ltr;"><pre>
 
double sqrtNum = sqrt(num);
if (sqrtNum < 0) {
// handler error...
}
</source>
 
</pre></div>
 
בגלל שטיפול השגיאות אינו מובנה בשפה, אנו נאלצים לאחר כל פונקציה, לבדוק האם התרחשה שגיאה שעלולה לפגוע בנכונות התוכנית.
שורה 40 ⟵ 36:
קודם כל, נגדיר מחלקה מיוחדת, שנוכל לזרוק אובייקטים שלה. אין חובה לעשות זאת, וניתן לזרוק כל מחלקה, אך ממולץ ליצור היררכית מחלקות מיוחדת עבור חריגות, כאשר כל מחלקה נועדה לסוג אחר של שגיאה.
 
<source lang="cpp">
<div style="text-align:left; direction:ltr;"><pre>
class InvalidArgumentException{};
</pre></divsource>
 
כעת, נממש מחדש את sqrt:
 
 
<source lang="cpp">
<div style="text-align:left; direction:ltr;"><pre>
double sqrt(double num){
if(num < 0.0) {
שורה 54 ⟵ 49:
// Do the rest of the root
)
</source>
 
</pre></div>
[[קטגוריה : C++]]