intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Đặc tả hình thức: Chương 13 - Nguyễn Thị Minh Tuyền

Chia sẻ: đinh Thị Tú Oanh | Ngày: | Loại File: PDF | Số trang:41

42
lượt xem
3
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Chương 13 giúp người học hiểu về "Giới thiệu về ESC/Java2 Cảnh báo". Nội dung trình bày cụ thể gồm có: Các loại cảnh báo ESC/Java2, Cast warning, Null warning, ArrayStore Warning, ZeroDiv, index Warnings, class invariant warnings,...

Chủ đề:
Lưu

Nội dung Text: Bài giảng Đặc tả hình thức: Chương 13 - Nguyễn Thị Minh Tuyền

LOGO<br /> <br /> Đặc tả hình thức<br /> Giới thiệu về ESC/Java2<br /> Cảnh báo<br /> <br /> Nguyễn Thị Minh Tuyền<br /> <br /> Nội dung slide này được dịch từ các slide của David Cok, Joe Kiniry, Eric Poll<br /> <br /> 1<br /> <br /> Các loại cảnh báo ESC/Java2<br /> v Các cảnh báo ESC/Java2 thường rơi vào các<br /> mục sau:<br /> §  Cảnh báo về ngoại lệ khi thực thi (runtime exception)(Cast, Null,<br /> NegSize, IndexTooBig, IndexNegative, ZeroDiv, ArrayStore).<br /> •  Đây là các ngoại lệ khi thực thi phổ biến nhất gây ra bởi các<br /> vấn đề khi lập trình.<br /> •  Không chứa tất cả các ngoại lệ khi thực thi.<br /> <br /> Nguyễn Thị Minh Tuyền<br /> <br /> 2<br /> <br /> Đặc tả hình thức<br /> <br /> Cast warning<br /> v Cảnh báo Cast xảy ra khi ESC/Java2 không<br /> thể kiểm tra rằng một ClassCastException sẽ<br /> không được đưa ra.<br /> public class CastWarning { <br /> public void m(Object o) { <br /> <br /> String s = (String)o; <br /> } <br /> } <br /> <br /> sinh ra<br /> -----------------------------------------------------------------------CastWarning.java:3: Warning: Possible type cast error (Cast)<br /> String s = (String)o;<br /> ˆ<br /> -----------------------------------------------------------------------Nguyễn Thị Minh Tuyền<br /> <br /> 3<br /> <br /> Đặc tả hình thức<br /> <br /> Cast warning<br /> Nhưng sẽ OK nếu ta viết:<br /> public class CastWarningOK { <br /> public void m(Object o) { <br /> <br /> if (o instanceof String) { <br /> <br /> <br /> String s = (String)o; <br /> <br /> } <br /> } <br /> <br /> }<br /> Với đặc tả JML:<br /> public class CastWarningOK2 { <br /> //@ requires o instanceof String; <br /> public void m(Object o) { <br /> <br /> String s = (String)o; <br /> } <br /> } <br /> Nguyễn Thị Minh Tuyền<br /> <br /> 4<br /> <br /> Đặc tả hình thức<br /> <br /> Null warning<br /> v  Cảnh báo Null xảy ra khi ESC/Java2 không thể kiểm<br /> tra rằng NullPointerException sẽ không được đưa ra.<br /> public class NullWarning { <br /> public void m(Object o) { <br /> <br /> int i = o.hashCode(); <br /> } <br /> }<br /> Kết quả:<br /> -----------------------------------------------------------------------NullWarning.java:3: Warning: Possible null dereference (Null)<br /> int i = o.hashCode();<br /> ˆ<br /> -----------------------------------------------------------------------Sẽ OK nếu ta viết:<br /> public class NullWarningOK { <br /> public void m(/*@ non_null */ Object o) { <br /> <br /> int i = o.hashCode(); <br /> } <br /> } <br /> Nguyễn Thị Minh Tuyền<br /> <br /> 5<br /> <br /> Đặc tả hình thức<br /> <br />
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2