예외는 바로잡기가 어렵습니다. try간과하기 쉬운 특히 까다로운 문제는 블록 내부의 부분 평가 가능성입니다 .
다음 JavaScript 프로그램을 고려하십시오.
let a = new SmallQueue(["item1"]);
let b = new SmallQueue(["item2", "item3", "item4"]);
try {
const item = a.pop();
b.push(item);
} catch (e) {
console.error("Failed to move item from a to b", e);
}
console.log({ a, b });
{
a: [],
b: ["item2", "item3", "item4", "item1"],
}
{
a: [],
b: ["item2", "item3", "item4"],
}
let a = new SmallQueue(["item1"]);
let b = new SmallQueue(["item2", "item3", "item4"]);
try {
if (b.isFull()) {
throw new Error("b is full");
}
const item = a.pop();
b.push(item);
} catch (e) {
console.error("Failed to move item from a to b", e);
}
console.log({ a, b });
또 다른 옵션은 변경될 수 있는 변수의 복사본을 저장하고 다음에서 복원하는 것입니다 catch.
let a = new SmallQueue(["item1"]);
let b = new SmallQueue(["item2", "item3", "item4"]);
const aCopy = a.copy();
const bCopy = b.copy();
try {
const item = a.pop();
b.push(item);
} catch (e) {
a = aCopy;
b = bCopy;
console.error("Failed to move item from a to b", e);
}
console.log({ a, b });
copy작업을 정의 해야 합니다.copy효율적이지 않을 수 있습니다.a.pop해당 부작용은 되돌릴 수 없습니다.let a = new SmallQueue(["item1"]);
let b = new SmallQueue(["item2", "item3", "item4"]);
let item;
try {
item = a.pop();
} catch (e) {
console.error("Failed to move item from a to b", e);
console.log({ a, b });
return;
}
try {
b.push(item);
} catch (e) {
a.unPop(item);
console.error("Failed to move item from a to b", e);
}
console.log({ a, b });
a.unPop(item)b.push(item)여전히 놓치기 쉬운 실패 시 이 작업이 필요하다는 것을 이해해야 합니다.ValueScript에서 try블록은 트랜잭션입니다. 완료될 때까지 실행되거나 되돌려집니다.
우리의 원래 프로그램은 수정 없이 우리가 원하는 것을 수행합니다.
let a = new SmallQueue(["item1"]);
let b = new SmallQueue(["item2", "item3", "item4"]);
try {
const item = a.pop();
b.push(item);
} catch (e) {
console.error("Failed to move item from a to b", e);
}
console.log({ a, b });
{
a: ["item1"],
b: ["item2", "item3", "item4"],
}
copy작업 필요" aCopy = a이는 복사와 동일합니다.copy효율적이지 않을 수 있음" a.popwill be reverted" * 일부 멋진 외부 기능에는 되돌리기 작업이 포함될 수 있으며 자동으로 호출됩니다.
ValueScript는 값 의미 체계가 있는 TypeScript의 방언입니다. 이 기사의 프로그램 데모를 포함하는 온라인 놀이터가 있으며 오픈 소스 입니다 .
이번 주에 저는 일일 이메일 목록의 회원으로부터 이메일을 받았습니다. 그들은 알고 싶어했습니다. 매일, 매주, 매월 어떤 리소스를 방문합니까? 좋은 질문입니다! 제 작업 흐름과 제가 사용하는 주요 리소스에 대한 통찰력을 공유하게 되어 기쁩니다.
이 블로그 시리즈의 목적은 Lit 라이브러리를 깊이 탐구하고 Lit 라이브러리의 고유한 기능과 시장의 다른 라이브러리 및 프레임워크와 차별화되는 방법을 포괄적으로 이해하는 것입니다. 이 시리즈는 1과 같은 주제를 다루는 세 부분으로 나뉩니다.
facebook.com에 요청하면 컴퓨터가 도메인 이름을 조회하여 해당 도메인 이름을 IP 주소로 변환하므로 컴퓨터가 해당 연결을 만들 수 있습니다.
오늘날과 같이 급변하고 경쟁이 치열한 세상에서 경력은 개인의 성장, 재정적 안정 및 전반적인 삶의 만족도에 중요한 역할을 합니다. 그러나 많은 사람들은 침체와 불만족의 끊임없는 순환에 휩싸여 직업 생활에서 점차 쇠퇴하고 있습니다.
“Siri야, Olivia Dean의 Me Dive 재생해줘.” 나이지리아 아쿠레에 있는 Future Academy Africa에서 인턴십을 시작한 것은 2021년 5월이었습니다.